package edu.uwaterloo.bicycle.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import edu.uwaterloo.bicycle.services.ModeLanguageGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalModeLanguageParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_MNAME", "RULE_TYPES", "RULE_NUMBER", "RULE_BUILT_IN_MODES", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "'MODE'", "'TYPE'", "'EXPRESSION'", "'CONDITION'", "'AND'", "'OR'", "'>'", "'<'", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'('", "')'", "'INVISIBLE'"
    };
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=9;
    public static final int EOF=-1;
    public static final int RULE_TYPES=5;
    public static final int RULE_ML_COMMENT=8;
    public static final int T__19=19;
    public static final int RULE_MNAME=4;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int RULE_NUMBER=6;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_WS=10;
    public static final int RULE_BUILT_IN_MODES=7;

    // delegates
    // delegators


        public InternalModeLanguageParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalModeLanguageParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalModeLanguageParser.tokenNames; }
    public String getGrammarFileName() { return "../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g"; }


     
     	private ModeLanguageGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(ModeLanguageGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleModel"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:60:1: entryRuleModel : ruleModel EOF ;
    public final void entryRuleModel() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:61:1: ( ruleModel EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:62:1: ruleModel EOF
            {
             before(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel61);
            ruleModel();

            state._fsp--;

             after(grammarAccess.getModelRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:69:1: ruleModel : ( ( rule__Model__ModesAssignment )* ) ;
    public final void ruleModel() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:73:2: ( ( ( rule__Model__ModesAssignment )* ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:74:1: ( ( rule__Model__ModesAssignment )* )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:74:1: ( ( rule__Model__ModesAssignment )* )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:75:1: ( rule__Model__ModesAssignment )*
            {
             before(grammarAccess.getModelAccess().getModesAssignment()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:76:1: ( rule__Model__ModesAssignment )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:76:2: rule__Model__ModesAssignment
            	    {
            	    pushFollow(FOLLOW_rule__Model__ModesAssignment_in_ruleModel94);
            	    rule__Model__ModesAssignment();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

             after(grammarAccess.getModelAccess().getModesAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleMode"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:88:1: entryRuleMode : ruleMode EOF ;
    public final void entryRuleMode() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:89:1: ( ruleMode EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:90:1: ruleMode EOF
            {
             before(grammarAccess.getModeRule()); 
            pushFollow(FOLLOW_ruleMode_in_entryRuleMode122);
            ruleMode();

            state._fsp--;

             after(grammarAccess.getModeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMode129); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleMode"


    // $ANTLR start "ruleMode"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:97:1: ruleMode : ( ( rule__Mode__Group__0 ) ) ;
    public final void ruleMode() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:101:2: ( ( ( rule__Mode__Group__0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:102:1: ( ( rule__Mode__Group__0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:102:1: ( ( rule__Mode__Group__0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:103:1: ( rule__Mode__Group__0 )
            {
             before(grammarAccess.getModeAccess().getGroup()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:104:1: ( rule__Mode__Group__0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:104:2: rule__Mode__Group__0
            {
            pushFollow(FOLLOW_rule__Mode__Group__0_in_ruleMode155);
            rule__Mode__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getModeAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMode"


    // $ANTLR start "entryRuleConditions"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:116:1: entryRuleConditions : ruleConditions EOF ;
    public final void entryRuleConditions() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:117:1: ( ruleConditions EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:118:1: ruleConditions EOF
            {
             before(grammarAccess.getConditionsRule()); 
            pushFollow(FOLLOW_ruleConditions_in_entryRuleConditions182);
            ruleConditions();

            state._fsp--;

             after(grammarAccess.getConditionsRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConditions189); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleConditions"


    // $ANTLR start "ruleConditions"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:125:1: ruleConditions : ( ruleCompoundCondition ) ;
    public final void ruleConditions() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:129:2: ( ( ruleCompoundCondition ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:130:1: ( ruleCompoundCondition )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:130:1: ( ruleCompoundCondition )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:131:1: ruleCompoundCondition
            {
             before(grammarAccess.getConditionsAccess().getCompoundConditionParserRuleCall()); 
            pushFollow(FOLLOW_ruleCompoundCondition_in_ruleConditions215);
            ruleCompoundCondition();

            state._fsp--;

             after(grammarAccess.getConditionsAccess().getCompoundConditionParserRuleCall()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleConditions"


    // $ANTLR start "entryRuleCompoundCondition"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:144:1: entryRuleCompoundCondition : ruleCompoundCondition EOF ;
    public final void entryRuleCompoundCondition() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:145:1: ( ruleCompoundCondition EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:146:1: ruleCompoundCondition EOF
            {
             before(grammarAccess.getCompoundConditionRule()); 
            pushFollow(FOLLOW_ruleCompoundCondition_in_entryRuleCompoundCondition241);
            ruleCompoundCondition();

            state._fsp--;

             after(grammarAccess.getCompoundConditionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCompoundCondition248); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleCompoundCondition"


    // $ANTLR start "ruleCompoundCondition"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:153:1: ruleCompoundCondition : ( ( rule__CompoundCondition__Group__0 ) ) ;
    public final void ruleCompoundCondition() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:157:2: ( ( ( rule__CompoundCondition__Group__0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:158:1: ( ( rule__CompoundCondition__Group__0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:158:1: ( ( rule__CompoundCondition__Group__0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:159:1: ( rule__CompoundCondition__Group__0 )
            {
             before(grammarAccess.getCompoundConditionAccess().getGroup()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:160:1: ( rule__CompoundCondition__Group__0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:160:2: rule__CompoundCondition__Group__0
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group__0_in_ruleCompoundCondition274);
            rule__CompoundCondition__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getCompoundConditionAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleCompoundCondition"


    // $ANTLR start "entryRuleCondition"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:172:1: entryRuleCondition : ruleCondition EOF ;
    public final void entryRuleCondition() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:173:1: ( ruleCondition EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:174:1: ruleCondition EOF
            {
             before(grammarAccess.getConditionRule()); 
            pushFollow(FOLLOW_ruleCondition_in_entryRuleCondition301);
            ruleCondition();

            state._fsp--;

             after(grammarAccess.getConditionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCondition308); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleCondition"


    // $ANTLR start "ruleCondition"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:181:1: ruleCondition : ( ( rule__Condition__Group__0 ) ) ;
    public final void ruleCondition() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:185:2: ( ( ( rule__Condition__Group__0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:186:1: ( ( rule__Condition__Group__0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:186:1: ( ( rule__Condition__Group__0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:187:1: ( rule__Condition__Group__0 )
            {
             before(grammarAccess.getConditionAccess().getGroup()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:188:1: ( rule__Condition__Group__0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:188:2: rule__Condition__Group__0
            {
            pushFollow(FOLLOW_rule__Condition__Group__0_in_ruleCondition334);
            rule__Condition__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getConditionAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleCondition"


    // $ANTLR start "entryRuleExpression"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:200:1: entryRuleExpression : ruleExpression EOF ;
    public final void entryRuleExpression() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:201:1: ( ruleExpression EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:202:1: ruleExpression EOF
            {
             before(grammarAccess.getExpressionRule()); 
            pushFollow(FOLLOW_ruleExpression_in_entryRuleExpression361);
            ruleExpression();

            state._fsp--;

             after(grammarAccess.getExpressionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExpression368); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleExpression"


    // $ANTLR start "ruleExpression"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:209:1: ruleExpression : ( ruleAddition ) ;
    public final void ruleExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:213:2: ( ( ruleAddition ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:214:1: ( ruleAddition )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:214:1: ( ruleAddition )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:215:1: ruleAddition
            {
             before(grammarAccess.getExpressionAccess().getAdditionParserRuleCall()); 
            pushFollow(FOLLOW_ruleAddition_in_ruleExpression394);
            ruleAddition();

            state._fsp--;

             after(grammarAccess.getExpressionAccess().getAdditionParserRuleCall()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleExpression"


    // $ANTLR start "entryRuleAddition"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:228:1: entryRuleAddition : ruleAddition EOF ;
    public final void entryRuleAddition() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:229:1: ( ruleAddition EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:230:1: ruleAddition EOF
            {
             before(grammarAccess.getAdditionRule()); 
            pushFollow(FOLLOW_ruleAddition_in_entryRuleAddition420);
            ruleAddition();

            state._fsp--;

             after(grammarAccess.getAdditionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAddition427); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleAddition"


    // $ANTLR start "ruleAddition"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:237:1: ruleAddition : ( ( rule__Addition__Group__0 ) ) ;
    public final void ruleAddition() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:241:2: ( ( ( rule__Addition__Group__0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:242:1: ( ( rule__Addition__Group__0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:242:1: ( ( rule__Addition__Group__0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:243:1: ( rule__Addition__Group__0 )
            {
             before(grammarAccess.getAdditionAccess().getGroup()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:244:1: ( rule__Addition__Group__0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:244:2: rule__Addition__Group__0
            {
            pushFollow(FOLLOW_rule__Addition__Group__0_in_ruleAddition453);
            rule__Addition__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getAdditionAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAddition"


    // $ANTLR start "entryRuleMultiplication"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:256:1: entryRuleMultiplication : ruleMultiplication EOF ;
    public final void entryRuleMultiplication() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:257:1: ( ruleMultiplication EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:258:1: ruleMultiplication EOF
            {
             before(grammarAccess.getMultiplicationRule()); 
            pushFollow(FOLLOW_ruleMultiplication_in_entryRuleMultiplication480);
            ruleMultiplication();

            state._fsp--;

             after(grammarAccess.getMultiplicationRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMultiplication487); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleMultiplication"


    // $ANTLR start "ruleMultiplication"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:265:1: ruleMultiplication : ( ( rule__Multiplication__Group__0 ) ) ;
    public final void ruleMultiplication() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:269:2: ( ( ( rule__Multiplication__Group__0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:270:1: ( ( rule__Multiplication__Group__0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:270:1: ( ( rule__Multiplication__Group__0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:271:1: ( rule__Multiplication__Group__0 )
            {
             before(grammarAccess.getMultiplicationAccess().getGroup()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:272:1: ( rule__Multiplication__Group__0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:272:2: rule__Multiplication__Group__0
            {
            pushFollow(FOLLOW_rule__Multiplication__Group__0_in_ruleMultiplication513);
            rule__Multiplication__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicationAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMultiplication"


    // $ANTLR start "entryRulePrimaryExpression"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:284:1: entryRulePrimaryExpression : rulePrimaryExpression EOF ;
    public final void entryRulePrimaryExpression() throws RecognitionException {
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:285:1: ( rulePrimaryExpression EOF )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:286:1: rulePrimaryExpression EOF
            {
             before(grammarAccess.getPrimaryExpressionRule()); 
            pushFollow(FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression540);
            rulePrimaryExpression();

            state._fsp--;

             after(grammarAccess.getPrimaryExpressionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePrimaryExpression547); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePrimaryExpression"


    // $ANTLR start "rulePrimaryExpression"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:293:1: rulePrimaryExpression : ( ( rule__PrimaryExpression__Alternatives ) ) ;
    public final void rulePrimaryExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:297:2: ( ( ( rule__PrimaryExpression__Alternatives ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:298:1: ( ( rule__PrimaryExpression__Alternatives ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:298:1: ( ( rule__PrimaryExpression__Alternatives ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:299:1: ( rule__PrimaryExpression__Alternatives )
            {
             before(grammarAccess.getPrimaryExpressionAccess().getAlternatives()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:300:1: ( rule__PrimaryExpression__Alternatives )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:300:2: rule__PrimaryExpression__Alternatives
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Alternatives_in_rulePrimaryExpression573);
            rule__PrimaryExpression__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getPrimaryExpressionAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePrimaryExpression"


    // $ANTLR start "rule__CompoundCondition__Alternatives_1_0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:312:1: rule__CompoundCondition__Alternatives_1_0 : ( ( ( rule__CompoundCondition__Group_1_0_0__0 ) ) | ( ( rule__CompoundCondition__Group_1_0_1__0 ) ) );
    public final void rule__CompoundCondition__Alternatives_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:316:1: ( ( ( rule__CompoundCondition__Group_1_0_0__0 ) ) | ( ( rule__CompoundCondition__Group_1_0_1__0 ) ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==15) ) {
                alt2=1;
            }
            else if ( (LA2_0==16) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:317:1: ( ( rule__CompoundCondition__Group_1_0_0__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:317:1: ( ( rule__CompoundCondition__Group_1_0_0__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:318:1: ( rule__CompoundCondition__Group_1_0_0__0 )
                    {
                     before(grammarAccess.getCompoundConditionAccess().getGroup_1_0_0()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:319:1: ( rule__CompoundCondition__Group_1_0_0__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:319:2: rule__CompoundCondition__Group_1_0_0__0
                    {
                    pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_0__0_in_rule__CompoundCondition__Alternatives_1_0609);
                    rule__CompoundCondition__Group_1_0_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getCompoundConditionAccess().getGroup_1_0_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:323:6: ( ( rule__CompoundCondition__Group_1_0_1__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:323:6: ( ( rule__CompoundCondition__Group_1_0_1__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:324:1: ( rule__CompoundCondition__Group_1_0_1__0 )
                    {
                     before(grammarAccess.getCompoundConditionAccess().getGroup_1_0_1()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:325:1: ( rule__CompoundCondition__Group_1_0_1__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:325:2: rule__CompoundCondition__Group_1_0_1__0
                    {
                    pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_1__0_in_rule__CompoundCondition__Alternatives_1_0627);
                    rule__CompoundCondition__Group_1_0_1__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getCompoundConditionAccess().getGroup_1_0_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Alternatives_1_0"


    // $ANTLR start "rule__Condition__Alternatives_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:334:1: rule__Condition__Alternatives_1 : ( ( ( rule__Condition__Group_1_0__0 ) ) | ( ( rule__Condition__Group_1_1__0 ) ) | ( ( rule__Condition__Group_1_2__0 ) ) );
    public final void rule__Condition__Alternatives_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:338:1: ( ( ( rule__Condition__Group_1_0__0 ) ) | ( ( rule__Condition__Group_1_1__0 ) ) | ( ( rule__Condition__Group_1_2__0 ) ) )
            int alt3=3;
            switch ( input.LA(1) ) {
            case 17:
                {
                alt3=1;
                }
                break;
            case 18:
                {
                alt3=2;
                }
                break;
            case 19:
                {
                alt3=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:339:1: ( ( rule__Condition__Group_1_0__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:339:1: ( ( rule__Condition__Group_1_0__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:340:1: ( rule__Condition__Group_1_0__0 )
                    {
                     before(grammarAccess.getConditionAccess().getGroup_1_0()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:341:1: ( rule__Condition__Group_1_0__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:341:2: rule__Condition__Group_1_0__0
                    {
                    pushFollow(FOLLOW_rule__Condition__Group_1_0__0_in_rule__Condition__Alternatives_1660);
                    rule__Condition__Group_1_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getConditionAccess().getGroup_1_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:345:6: ( ( rule__Condition__Group_1_1__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:345:6: ( ( rule__Condition__Group_1_1__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:346:1: ( rule__Condition__Group_1_1__0 )
                    {
                     before(grammarAccess.getConditionAccess().getGroup_1_1()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:347:1: ( rule__Condition__Group_1_1__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:347:2: rule__Condition__Group_1_1__0
                    {
                    pushFollow(FOLLOW_rule__Condition__Group_1_1__0_in_rule__Condition__Alternatives_1678);
                    rule__Condition__Group_1_1__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getConditionAccess().getGroup_1_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:351:6: ( ( rule__Condition__Group_1_2__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:351:6: ( ( rule__Condition__Group_1_2__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:352:1: ( rule__Condition__Group_1_2__0 )
                    {
                     before(grammarAccess.getConditionAccess().getGroup_1_2()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:353:1: ( rule__Condition__Group_1_2__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:353:2: rule__Condition__Group_1_2__0
                    {
                    pushFollow(FOLLOW_rule__Condition__Group_1_2__0_in_rule__Condition__Alternatives_1696);
                    rule__Condition__Group_1_2__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getConditionAccess().getGroup_1_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Alternatives_1"


    // $ANTLR start "rule__Addition__Alternatives_1_0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:362:1: rule__Addition__Alternatives_1_0 : ( ( ( rule__Addition__Group_1_0_0__0 ) ) | ( ( rule__Addition__Group_1_0_1__0 ) ) );
    public final void rule__Addition__Alternatives_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:366:1: ( ( ( rule__Addition__Group_1_0_0__0 ) ) | ( ( rule__Addition__Group_1_0_1__0 ) ) )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==20) ) {
                alt4=1;
            }
            else if ( (LA4_0==21) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:367:1: ( ( rule__Addition__Group_1_0_0__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:367:1: ( ( rule__Addition__Group_1_0_0__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:368:1: ( rule__Addition__Group_1_0_0__0 )
                    {
                     before(grammarAccess.getAdditionAccess().getGroup_1_0_0()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:369:1: ( rule__Addition__Group_1_0_0__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:369:2: rule__Addition__Group_1_0_0__0
                    {
                    pushFollow(FOLLOW_rule__Addition__Group_1_0_0__0_in_rule__Addition__Alternatives_1_0729);
                    rule__Addition__Group_1_0_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getAdditionAccess().getGroup_1_0_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:373:6: ( ( rule__Addition__Group_1_0_1__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:373:6: ( ( rule__Addition__Group_1_0_1__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:374:1: ( rule__Addition__Group_1_0_1__0 )
                    {
                     before(grammarAccess.getAdditionAccess().getGroup_1_0_1()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:375:1: ( rule__Addition__Group_1_0_1__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:375:2: rule__Addition__Group_1_0_1__0
                    {
                    pushFollow(FOLLOW_rule__Addition__Group_1_0_1__0_in_rule__Addition__Alternatives_1_0747);
                    rule__Addition__Group_1_0_1__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getAdditionAccess().getGroup_1_0_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Alternatives_1_0"


    // $ANTLR start "rule__Multiplication__Alternatives_1_0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:384:1: rule__Multiplication__Alternatives_1_0 : ( ( ( rule__Multiplication__Group_1_0_0__0 ) ) | ( ( rule__Multiplication__Group_1_0_1__0 ) ) | ( ( rule__Multiplication__Group_1_0_2__0 ) ) );
    public final void rule__Multiplication__Alternatives_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:388:1: ( ( ( rule__Multiplication__Group_1_0_0__0 ) ) | ( ( rule__Multiplication__Group_1_0_1__0 ) ) | ( ( rule__Multiplication__Group_1_0_2__0 ) ) )
            int alt5=3;
            switch ( input.LA(1) ) {
            case 22:
                {
                alt5=1;
                }
                break;
            case 23:
                {
                alt5=2;
                }
                break;
            case 24:
                {
                alt5=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:389:1: ( ( rule__Multiplication__Group_1_0_0__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:389:1: ( ( rule__Multiplication__Group_1_0_0__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:390:1: ( rule__Multiplication__Group_1_0_0__0 )
                    {
                     before(grammarAccess.getMultiplicationAccess().getGroup_1_0_0()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:391:1: ( rule__Multiplication__Group_1_0_0__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:391:2: rule__Multiplication__Group_1_0_0__0
                    {
                    pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__0_in_rule__Multiplication__Alternatives_1_0780);
                    rule__Multiplication__Group_1_0_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getMultiplicationAccess().getGroup_1_0_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:395:6: ( ( rule__Multiplication__Group_1_0_1__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:395:6: ( ( rule__Multiplication__Group_1_0_1__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:396:1: ( rule__Multiplication__Group_1_0_1__0 )
                    {
                     before(grammarAccess.getMultiplicationAccess().getGroup_1_0_1()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:397:1: ( rule__Multiplication__Group_1_0_1__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:397:2: rule__Multiplication__Group_1_0_1__0
                    {
                    pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__0_in_rule__Multiplication__Alternatives_1_0798);
                    rule__Multiplication__Group_1_0_1__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getMultiplicationAccess().getGroup_1_0_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:401:6: ( ( rule__Multiplication__Group_1_0_2__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:401:6: ( ( rule__Multiplication__Group_1_0_2__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:402:1: ( rule__Multiplication__Group_1_0_2__0 )
                    {
                     before(grammarAccess.getMultiplicationAccess().getGroup_1_0_2()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:403:1: ( rule__Multiplication__Group_1_0_2__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:403:2: rule__Multiplication__Group_1_0_2__0
                    {
                    pushFollow(FOLLOW_rule__Multiplication__Group_1_0_2__0_in_rule__Multiplication__Alternatives_1_0816);
                    rule__Multiplication__Group_1_0_2__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getMultiplicationAccess().getGroup_1_0_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Alternatives_1_0"


    // $ANTLR start "rule__PrimaryExpression__Alternatives"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:412:1: rule__PrimaryExpression__Alternatives : ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ( rule__PrimaryExpression__Group_2__0 ) ) | ( ( rule__PrimaryExpression__Group_3__0 ) ) );
    public final void rule__PrimaryExpression__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:416:1: ( ( ( rule__PrimaryExpression__Group_0__0 ) ) | ( ( rule__PrimaryExpression__Group_1__0 ) ) | ( ( rule__PrimaryExpression__Group_2__0 ) ) | ( ( rule__PrimaryExpression__Group_3__0 ) ) )
            int alt6=4;
            switch ( input.LA(1) ) {
            case 25:
                {
                alt6=1;
                }
                break;
            case RULE_NUMBER:
                {
                alt6=2;
                }
                break;
            case RULE_MNAME:
                {
                alt6=3;
                }
                break;
            case RULE_BUILT_IN_MODES:
                {
                alt6=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:417:1: ( ( rule__PrimaryExpression__Group_0__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:417:1: ( ( rule__PrimaryExpression__Group_0__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:418:1: ( rule__PrimaryExpression__Group_0__0 )
                    {
                     before(grammarAccess.getPrimaryExpressionAccess().getGroup_0()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:419:1: ( rule__PrimaryExpression__Group_0__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:419:2: rule__PrimaryExpression__Group_0__0
                    {
                    pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__0_in_rule__PrimaryExpression__Alternatives849);
                    rule__PrimaryExpression__Group_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getPrimaryExpressionAccess().getGroup_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:423:6: ( ( rule__PrimaryExpression__Group_1__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:423:6: ( ( rule__PrimaryExpression__Group_1__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:424:1: ( rule__PrimaryExpression__Group_1__0 )
                    {
                     before(grammarAccess.getPrimaryExpressionAccess().getGroup_1()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:425:1: ( rule__PrimaryExpression__Group_1__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:425:2: rule__PrimaryExpression__Group_1__0
                    {
                    pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__0_in_rule__PrimaryExpression__Alternatives867);
                    rule__PrimaryExpression__Group_1__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getPrimaryExpressionAccess().getGroup_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:429:6: ( ( rule__PrimaryExpression__Group_2__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:429:6: ( ( rule__PrimaryExpression__Group_2__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:430:1: ( rule__PrimaryExpression__Group_2__0 )
                    {
                     before(grammarAccess.getPrimaryExpressionAccess().getGroup_2()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:431:1: ( rule__PrimaryExpression__Group_2__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:431:2: rule__PrimaryExpression__Group_2__0
                    {
                    pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__0_in_rule__PrimaryExpression__Alternatives885);
                    rule__PrimaryExpression__Group_2__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getPrimaryExpressionAccess().getGroup_2()); 

                    }


                    }
                    break;
                case 4 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:435:6: ( ( rule__PrimaryExpression__Group_3__0 ) )
                    {
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:435:6: ( ( rule__PrimaryExpression__Group_3__0 ) )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:436:1: ( rule__PrimaryExpression__Group_3__0 )
                    {
                     before(grammarAccess.getPrimaryExpressionAccess().getGroup_3()); 
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:437:1: ( rule__PrimaryExpression__Group_3__0 )
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:437:2: rule__PrimaryExpression__Group_3__0
                    {
                    pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__0_in_rule__PrimaryExpression__Alternatives903);
                    rule__PrimaryExpression__Group_3__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getPrimaryExpressionAccess().getGroup_3()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Alternatives"


    // $ANTLR start "rule__Mode__Group__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:448:1: rule__Mode__Group__0 : rule__Mode__Group__0__Impl rule__Mode__Group__1 ;
    public final void rule__Mode__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:452:1: ( rule__Mode__Group__0__Impl rule__Mode__Group__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:453:2: rule__Mode__Group__0__Impl rule__Mode__Group__1
            {
            pushFollow(FOLLOW_rule__Mode__Group__0__Impl_in_rule__Mode__Group__0934);
            rule__Mode__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__1_in_rule__Mode__Group__0937);
            rule__Mode__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__0"


    // $ANTLR start "rule__Mode__Group__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:460:1: rule__Mode__Group__0__Impl : ( 'MODE' ) ;
    public final void rule__Mode__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:464:1: ( ( 'MODE' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:465:1: ( 'MODE' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:465:1: ( 'MODE' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:466:1: 'MODE'
            {
             before(grammarAccess.getModeAccess().getMODEKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__Mode__Group__0__Impl965); 
             after(grammarAccess.getModeAccess().getMODEKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__0__Impl"


    // $ANTLR start "rule__Mode__Group__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:479:1: rule__Mode__Group__1 : rule__Mode__Group__1__Impl rule__Mode__Group__2 ;
    public final void rule__Mode__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:483:1: ( rule__Mode__Group__1__Impl rule__Mode__Group__2 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:484:2: rule__Mode__Group__1__Impl rule__Mode__Group__2
            {
            pushFollow(FOLLOW_rule__Mode__Group__1__Impl_in_rule__Mode__Group__1996);
            rule__Mode__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__2_in_rule__Mode__Group__1999);
            rule__Mode__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__1"


    // $ANTLR start "rule__Mode__Group__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:491:1: rule__Mode__Group__1__Impl : ( ( rule__Mode__NameAssignment_1 ) ) ;
    public final void rule__Mode__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:495:1: ( ( ( rule__Mode__NameAssignment_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:496:1: ( ( rule__Mode__NameAssignment_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:496:1: ( ( rule__Mode__NameAssignment_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:497:1: ( rule__Mode__NameAssignment_1 )
            {
             before(grammarAccess.getModeAccess().getNameAssignment_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:498:1: ( rule__Mode__NameAssignment_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:498:2: rule__Mode__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Mode__NameAssignment_1_in_rule__Mode__Group__1__Impl1026);
            rule__Mode__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getModeAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__1__Impl"


    // $ANTLR start "rule__Mode__Group__2"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:508:1: rule__Mode__Group__2 : rule__Mode__Group__2__Impl rule__Mode__Group__3 ;
    public final void rule__Mode__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:512:1: ( rule__Mode__Group__2__Impl rule__Mode__Group__3 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:513:2: rule__Mode__Group__2__Impl rule__Mode__Group__3
            {
            pushFollow(FOLLOW_rule__Mode__Group__2__Impl_in_rule__Mode__Group__21056);
            rule__Mode__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__3_in_rule__Mode__Group__21059);
            rule__Mode__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__2"


    // $ANTLR start "rule__Mode__Group__2__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:520:1: rule__Mode__Group__2__Impl : ( ( rule__Mode__InvAssignment_2 )? ) ;
    public final void rule__Mode__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:524:1: ( ( ( rule__Mode__InvAssignment_2 )? ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:525:1: ( ( rule__Mode__InvAssignment_2 )? )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:525:1: ( ( rule__Mode__InvAssignment_2 )? )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:526:1: ( rule__Mode__InvAssignment_2 )?
            {
             before(grammarAccess.getModeAccess().getInvAssignment_2()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:527:1: ( rule__Mode__InvAssignment_2 )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==27) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:527:2: rule__Mode__InvAssignment_2
                    {
                    pushFollow(FOLLOW_rule__Mode__InvAssignment_2_in_rule__Mode__Group__2__Impl1086);
                    rule__Mode__InvAssignment_2();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getModeAccess().getInvAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__2__Impl"


    // $ANTLR start "rule__Mode__Group__3"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:537:1: rule__Mode__Group__3 : rule__Mode__Group__3__Impl rule__Mode__Group__4 ;
    public final void rule__Mode__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:541:1: ( rule__Mode__Group__3__Impl rule__Mode__Group__4 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:542:2: rule__Mode__Group__3__Impl rule__Mode__Group__4
            {
            pushFollow(FOLLOW_rule__Mode__Group__3__Impl_in_rule__Mode__Group__31117);
            rule__Mode__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__4_in_rule__Mode__Group__31120);
            rule__Mode__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__3"


    // $ANTLR start "rule__Mode__Group__3__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:549:1: rule__Mode__Group__3__Impl : ( 'TYPE' ) ;
    public final void rule__Mode__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:553:1: ( ( 'TYPE' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:554:1: ( 'TYPE' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:554:1: ( 'TYPE' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:555:1: 'TYPE'
            {
             before(grammarAccess.getModeAccess().getTYPEKeyword_3()); 
            match(input,12,FOLLOW_12_in_rule__Mode__Group__3__Impl1148); 
             after(grammarAccess.getModeAccess().getTYPEKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__3__Impl"


    // $ANTLR start "rule__Mode__Group__4"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:568:1: rule__Mode__Group__4 : rule__Mode__Group__4__Impl rule__Mode__Group__5 ;
    public final void rule__Mode__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:572:1: ( rule__Mode__Group__4__Impl rule__Mode__Group__5 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:573:2: rule__Mode__Group__4__Impl rule__Mode__Group__5
            {
            pushFollow(FOLLOW_rule__Mode__Group__4__Impl_in_rule__Mode__Group__41179);
            rule__Mode__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__5_in_rule__Mode__Group__41182);
            rule__Mode__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__4"


    // $ANTLR start "rule__Mode__Group__4__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:580:1: rule__Mode__Group__4__Impl : ( ( rule__Mode__TypeAssignment_4 ) ) ;
    public final void rule__Mode__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:584:1: ( ( ( rule__Mode__TypeAssignment_4 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:585:1: ( ( rule__Mode__TypeAssignment_4 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:585:1: ( ( rule__Mode__TypeAssignment_4 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:586:1: ( rule__Mode__TypeAssignment_4 )
            {
             before(grammarAccess.getModeAccess().getTypeAssignment_4()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:587:1: ( rule__Mode__TypeAssignment_4 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:587:2: rule__Mode__TypeAssignment_4
            {
            pushFollow(FOLLOW_rule__Mode__TypeAssignment_4_in_rule__Mode__Group__4__Impl1209);
            rule__Mode__TypeAssignment_4();

            state._fsp--;


            }

             after(grammarAccess.getModeAccess().getTypeAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__4__Impl"


    // $ANTLR start "rule__Mode__Group__5"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:597:1: rule__Mode__Group__5 : rule__Mode__Group__5__Impl rule__Mode__Group__6 ;
    public final void rule__Mode__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:601:1: ( rule__Mode__Group__5__Impl rule__Mode__Group__6 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:602:2: rule__Mode__Group__5__Impl rule__Mode__Group__6
            {
            pushFollow(FOLLOW_rule__Mode__Group__5__Impl_in_rule__Mode__Group__51239);
            rule__Mode__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__6_in_rule__Mode__Group__51242);
            rule__Mode__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__5"


    // $ANTLR start "rule__Mode__Group__5__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:609:1: rule__Mode__Group__5__Impl : ( ( rule__Mode__Group_5__0 )? ) ;
    public final void rule__Mode__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:613:1: ( ( ( rule__Mode__Group_5__0 )? ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:614:1: ( ( rule__Mode__Group_5__0 )? )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:614:1: ( ( rule__Mode__Group_5__0 )? )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:615:1: ( rule__Mode__Group_5__0 )?
            {
             before(grammarAccess.getModeAccess().getGroup_5()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:616:1: ( rule__Mode__Group_5__0 )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==14) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:616:2: rule__Mode__Group_5__0
                    {
                    pushFollow(FOLLOW_rule__Mode__Group_5__0_in_rule__Mode__Group__5__Impl1269);
                    rule__Mode__Group_5__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getModeAccess().getGroup_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__5__Impl"


    // $ANTLR start "rule__Mode__Group__6"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:626:1: rule__Mode__Group__6 : rule__Mode__Group__6__Impl rule__Mode__Group__7 ;
    public final void rule__Mode__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:630:1: ( rule__Mode__Group__6__Impl rule__Mode__Group__7 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:631:2: rule__Mode__Group__6__Impl rule__Mode__Group__7
            {
            pushFollow(FOLLOW_rule__Mode__Group__6__Impl_in_rule__Mode__Group__61300);
            rule__Mode__Group__6__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group__7_in_rule__Mode__Group__61303);
            rule__Mode__Group__7();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__6"


    // $ANTLR start "rule__Mode__Group__6__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:638:1: rule__Mode__Group__6__Impl : ( 'EXPRESSION' ) ;
    public final void rule__Mode__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:642:1: ( ( 'EXPRESSION' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:643:1: ( 'EXPRESSION' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:643:1: ( 'EXPRESSION' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:644:1: 'EXPRESSION'
            {
             before(grammarAccess.getModeAccess().getEXPRESSIONKeyword_6()); 
            match(input,13,FOLLOW_13_in_rule__Mode__Group__6__Impl1331); 
             after(grammarAccess.getModeAccess().getEXPRESSIONKeyword_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__6__Impl"


    // $ANTLR start "rule__Mode__Group__7"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:657:1: rule__Mode__Group__7 : rule__Mode__Group__7__Impl ;
    public final void rule__Mode__Group__7() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:661:1: ( rule__Mode__Group__7__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:662:2: rule__Mode__Group__7__Impl
            {
            pushFollow(FOLLOW_rule__Mode__Group__7__Impl_in_rule__Mode__Group__71362);
            rule__Mode__Group__7__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__7"


    // $ANTLR start "rule__Mode__Group__7__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:668:1: rule__Mode__Group__7__Impl : ( ( rule__Mode__ExprAssignment_7 ) ) ;
    public final void rule__Mode__Group__7__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:672:1: ( ( ( rule__Mode__ExprAssignment_7 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:673:1: ( ( rule__Mode__ExprAssignment_7 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:673:1: ( ( rule__Mode__ExprAssignment_7 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:674:1: ( rule__Mode__ExprAssignment_7 )
            {
             before(grammarAccess.getModeAccess().getExprAssignment_7()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:675:1: ( rule__Mode__ExprAssignment_7 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:675:2: rule__Mode__ExprAssignment_7
            {
            pushFollow(FOLLOW_rule__Mode__ExprAssignment_7_in_rule__Mode__Group__7__Impl1389);
            rule__Mode__ExprAssignment_7();

            state._fsp--;


            }

             after(grammarAccess.getModeAccess().getExprAssignment_7()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group__7__Impl"


    // $ANTLR start "rule__Mode__Group_5__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:701:1: rule__Mode__Group_5__0 : rule__Mode__Group_5__0__Impl rule__Mode__Group_5__1 ;
    public final void rule__Mode__Group_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:705:1: ( rule__Mode__Group_5__0__Impl rule__Mode__Group_5__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:706:2: rule__Mode__Group_5__0__Impl rule__Mode__Group_5__1
            {
            pushFollow(FOLLOW_rule__Mode__Group_5__0__Impl_in_rule__Mode__Group_5__01435);
            rule__Mode__Group_5__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Mode__Group_5__1_in_rule__Mode__Group_5__01438);
            rule__Mode__Group_5__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group_5__0"


    // $ANTLR start "rule__Mode__Group_5__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:713:1: rule__Mode__Group_5__0__Impl : ( 'CONDITION' ) ;
    public final void rule__Mode__Group_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:717:1: ( ( 'CONDITION' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:718:1: ( 'CONDITION' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:718:1: ( 'CONDITION' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:719:1: 'CONDITION'
            {
             before(grammarAccess.getModeAccess().getCONDITIONKeyword_5_0()); 
            match(input,14,FOLLOW_14_in_rule__Mode__Group_5__0__Impl1466); 
             after(grammarAccess.getModeAccess().getCONDITIONKeyword_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group_5__0__Impl"


    // $ANTLR start "rule__Mode__Group_5__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:732:1: rule__Mode__Group_5__1 : rule__Mode__Group_5__1__Impl ;
    public final void rule__Mode__Group_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:736:1: ( rule__Mode__Group_5__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:737:2: rule__Mode__Group_5__1__Impl
            {
            pushFollow(FOLLOW_rule__Mode__Group_5__1__Impl_in_rule__Mode__Group_5__11497);
            rule__Mode__Group_5__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group_5__1"


    // $ANTLR start "rule__Mode__Group_5__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:743:1: rule__Mode__Group_5__1__Impl : ( ( rule__Mode__ConditionAssignment_5_1 ) ) ;
    public final void rule__Mode__Group_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:747:1: ( ( ( rule__Mode__ConditionAssignment_5_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:748:1: ( ( rule__Mode__ConditionAssignment_5_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:748:1: ( ( rule__Mode__ConditionAssignment_5_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:749:1: ( rule__Mode__ConditionAssignment_5_1 )
            {
             before(grammarAccess.getModeAccess().getConditionAssignment_5_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:750:1: ( rule__Mode__ConditionAssignment_5_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:750:2: rule__Mode__ConditionAssignment_5_1
            {
            pushFollow(FOLLOW_rule__Mode__ConditionAssignment_5_1_in_rule__Mode__Group_5__1__Impl1524);
            rule__Mode__ConditionAssignment_5_1();

            state._fsp--;


            }

             after(grammarAccess.getModeAccess().getConditionAssignment_5_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__Group_5__1__Impl"


    // $ANTLR start "rule__CompoundCondition__Group__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:764:1: rule__CompoundCondition__Group__0 : rule__CompoundCondition__Group__0__Impl rule__CompoundCondition__Group__1 ;
    public final void rule__CompoundCondition__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:768:1: ( rule__CompoundCondition__Group__0__Impl rule__CompoundCondition__Group__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:769:2: rule__CompoundCondition__Group__0__Impl rule__CompoundCondition__Group__1
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group__0__Impl_in_rule__CompoundCondition__Group__01558);
            rule__CompoundCondition__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__CompoundCondition__Group__1_in_rule__CompoundCondition__Group__01561);
            rule__CompoundCondition__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group__0"


    // $ANTLR start "rule__CompoundCondition__Group__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:776:1: rule__CompoundCondition__Group__0__Impl : ( ruleCondition ) ;
    public final void rule__CompoundCondition__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:780:1: ( ( ruleCondition ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:781:1: ( ruleCondition )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:781:1: ( ruleCondition )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:782:1: ruleCondition
            {
             before(grammarAccess.getCompoundConditionAccess().getConditionParserRuleCall_0()); 
            pushFollow(FOLLOW_ruleCondition_in_rule__CompoundCondition__Group__0__Impl1588);
            ruleCondition();

            state._fsp--;

             after(grammarAccess.getCompoundConditionAccess().getConditionParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group__0__Impl"


    // $ANTLR start "rule__CompoundCondition__Group__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:793:1: rule__CompoundCondition__Group__1 : rule__CompoundCondition__Group__1__Impl ;
    public final void rule__CompoundCondition__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:797:1: ( rule__CompoundCondition__Group__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:798:2: rule__CompoundCondition__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group__1__Impl_in_rule__CompoundCondition__Group__11617);
            rule__CompoundCondition__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group__1"


    // $ANTLR start "rule__CompoundCondition__Group__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:804:1: rule__CompoundCondition__Group__1__Impl : ( ( rule__CompoundCondition__Group_1__0 )* ) ;
    public final void rule__CompoundCondition__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:808:1: ( ( ( rule__CompoundCondition__Group_1__0 )* ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:809:1: ( ( rule__CompoundCondition__Group_1__0 )* )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:809:1: ( ( rule__CompoundCondition__Group_1__0 )* )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:810:1: ( rule__CompoundCondition__Group_1__0 )*
            {
             before(grammarAccess.getCompoundConditionAccess().getGroup_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:811:1: ( rule__CompoundCondition__Group_1__0 )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( ((LA9_0>=15 && LA9_0<=16)) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:811:2: rule__CompoundCondition__Group_1__0
            	    {
            	    pushFollow(FOLLOW_rule__CompoundCondition__Group_1__0_in_rule__CompoundCondition__Group__1__Impl1644);
            	    rule__CompoundCondition__Group_1__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

             after(grammarAccess.getCompoundConditionAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group__1__Impl"


    // $ANTLR start "rule__CompoundCondition__Group_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:825:1: rule__CompoundCondition__Group_1__0 : rule__CompoundCondition__Group_1__0__Impl rule__CompoundCondition__Group_1__1 ;
    public final void rule__CompoundCondition__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:829:1: ( rule__CompoundCondition__Group_1__0__Impl rule__CompoundCondition__Group_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:830:2: rule__CompoundCondition__Group_1__0__Impl rule__CompoundCondition__Group_1__1
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group_1__0__Impl_in_rule__CompoundCondition__Group_1__01679);
            rule__CompoundCondition__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__CompoundCondition__Group_1__1_in_rule__CompoundCondition__Group_1__01682);
            rule__CompoundCondition__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1__0"


    // $ANTLR start "rule__CompoundCondition__Group_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:837:1: rule__CompoundCondition__Group_1__0__Impl : ( ( rule__CompoundCondition__Alternatives_1_0 ) ) ;
    public final void rule__CompoundCondition__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:841:1: ( ( ( rule__CompoundCondition__Alternatives_1_0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:842:1: ( ( rule__CompoundCondition__Alternatives_1_0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:842:1: ( ( rule__CompoundCondition__Alternatives_1_0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:843:1: ( rule__CompoundCondition__Alternatives_1_0 )
            {
             before(grammarAccess.getCompoundConditionAccess().getAlternatives_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:844:1: ( rule__CompoundCondition__Alternatives_1_0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:844:2: rule__CompoundCondition__Alternatives_1_0
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Alternatives_1_0_in_rule__CompoundCondition__Group_1__0__Impl1709);
            rule__CompoundCondition__Alternatives_1_0();

            state._fsp--;


            }

             after(grammarAccess.getCompoundConditionAccess().getAlternatives_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1__0__Impl"


    // $ANTLR start "rule__CompoundCondition__Group_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:854:1: rule__CompoundCondition__Group_1__1 : rule__CompoundCondition__Group_1__1__Impl ;
    public final void rule__CompoundCondition__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:858:1: ( rule__CompoundCondition__Group_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:859:2: rule__CompoundCondition__Group_1__1__Impl
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group_1__1__Impl_in_rule__CompoundCondition__Group_1__11739);
            rule__CompoundCondition__Group_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1__1"


    // $ANTLR start "rule__CompoundCondition__Group_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:865:1: rule__CompoundCondition__Group_1__1__Impl : ( ( rule__CompoundCondition__RightAssignment_1_1 ) ) ;
    public final void rule__CompoundCondition__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:869:1: ( ( ( rule__CompoundCondition__RightAssignment_1_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:870:1: ( ( rule__CompoundCondition__RightAssignment_1_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:870:1: ( ( rule__CompoundCondition__RightAssignment_1_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:871:1: ( rule__CompoundCondition__RightAssignment_1_1 )
            {
             before(grammarAccess.getCompoundConditionAccess().getRightAssignment_1_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:872:1: ( rule__CompoundCondition__RightAssignment_1_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:872:2: rule__CompoundCondition__RightAssignment_1_1
            {
            pushFollow(FOLLOW_rule__CompoundCondition__RightAssignment_1_1_in_rule__CompoundCondition__Group_1__1__Impl1766);
            rule__CompoundCondition__RightAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getCompoundConditionAccess().getRightAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1__1__Impl"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_0__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:886:1: rule__CompoundCondition__Group_1_0_0__0 : rule__CompoundCondition__Group_1_0_0__0__Impl rule__CompoundCondition__Group_1_0_0__1 ;
    public final void rule__CompoundCondition__Group_1_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:890:1: ( rule__CompoundCondition__Group_1_0_0__0__Impl rule__CompoundCondition__Group_1_0_0__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:891:2: rule__CompoundCondition__Group_1_0_0__0__Impl rule__CompoundCondition__Group_1_0_0__1
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_0__0__Impl_in_rule__CompoundCondition__Group_1_0_0__01800);
            rule__CompoundCondition__Group_1_0_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_0__1_in_rule__CompoundCondition__Group_1_0_0__01803);
            rule__CompoundCondition__Group_1_0_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_0__0"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_0__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:898:1: rule__CompoundCondition__Group_1_0_0__0__Impl : ( () ) ;
    public final void rule__CompoundCondition__Group_1_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:902:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:903:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:903:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:904:1: ()
            {
             before(grammarAccess.getCompoundConditionAccess().getAndCondLeftAction_1_0_0_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:905:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:907:1: 
            {
            }

             after(grammarAccess.getCompoundConditionAccess().getAndCondLeftAction_1_0_0_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_0__0__Impl"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_0__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:917:1: rule__CompoundCondition__Group_1_0_0__1 : rule__CompoundCondition__Group_1_0_0__1__Impl ;
    public final void rule__CompoundCondition__Group_1_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:921:1: ( rule__CompoundCondition__Group_1_0_0__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:922:2: rule__CompoundCondition__Group_1_0_0__1__Impl
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_0__1__Impl_in_rule__CompoundCondition__Group_1_0_0__11861);
            rule__CompoundCondition__Group_1_0_0__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_0__1"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_0__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:928:1: rule__CompoundCondition__Group_1_0_0__1__Impl : ( 'AND' ) ;
    public final void rule__CompoundCondition__Group_1_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:932:1: ( ( 'AND' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:933:1: ( 'AND' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:933:1: ( 'AND' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:934:1: 'AND'
            {
             before(grammarAccess.getCompoundConditionAccess().getANDKeyword_1_0_0_1()); 
            match(input,15,FOLLOW_15_in_rule__CompoundCondition__Group_1_0_0__1__Impl1889); 
             after(grammarAccess.getCompoundConditionAccess().getANDKeyword_1_0_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_0__1__Impl"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:951:1: rule__CompoundCondition__Group_1_0_1__0 : rule__CompoundCondition__Group_1_0_1__0__Impl rule__CompoundCondition__Group_1_0_1__1 ;
    public final void rule__CompoundCondition__Group_1_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:955:1: ( rule__CompoundCondition__Group_1_0_1__0__Impl rule__CompoundCondition__Group_1_0_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:956:2: rule__CompoundCondition__Group_1_0_1__0__Impl rule__CompoundCondition__Group_1_0_1__1
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_1__0__Impl_in_rule__CompoundCondition__Group_1_0_1__01924);
            rule__CompoundCondition__Group_1_0_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_1__1_in_rule__CompoundCondition__Group_1_0_1__01927);
            rule__CompoundCondition__Group_1_0_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_1__0"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:963:1: rule__CompoundCondition__Group_1_0_1__0__Impl : ( () ) ;
    public final void rule__CompoundCondition__Group_1_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:967:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:968:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:968:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:969:1: ()
            {
             before(grammarAccess.getCompoundConditionAccess().getOrCondLeftAction_1_0_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:970:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:972:1: 
            {
            }

             after(grammarAccess.getCompoundConditionAccess().getOrCondLeftAction_1_0_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_1__0__Impl"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:982:1: rule__CompoundCondition__Group_1_0_1__1 : rule__CompoundCondition__Group_1_0_1__1__Impl ;
    public final void rule__CompoundCondition__Group_1_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:986:1: ( rule__CompoundCondition__Group_1_0_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:987:2: rule__CompoundCondition__Group_1_0_1__1__Impl
            {
            pushFollow(FOLLOW_rule__CompoundCondition__Group_1_0_1__1__Impl_in_rule__CompoundCondition__Group_1_0_1__11985);
            rule__CompoundCondition__Group_1_0_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_1__1"


    // $ANTLR start "rule__CompoundCondition__Group_1_0_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:993:1: rule__CompoundCondition__Group_1_0_1__1__Impl : ( 'OR' ) ;
    public final void rule__CompoundCondition__Group_1_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:997:1: ( ( 'OR' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:998:1: ( 'OR' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:998:1: ( 'OR' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:999:1: 'OR'
            {
             before(grammarAccess.getCompoundConditionAccess().getORKeyword_1_0_1_1()); 
            match(input,16,FOLLOW_16_in_rule__CompoundCondition__Group_1_0_1__1__Impl2013); 
             after(grammarAccess.getCompoundConditionAccess().getORKeyword_1_0_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__Group_1_0_1__1__Impl"


    // $ANTLR start "rule__Condition__Group__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1016:1: rule__Condition__Group__0 : rule__Condition__Group__0__Impl rule__Condition__Group__1 ;
    public final void rule__Condition__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1020:1: ( rule__Condition__Group__0__Impl rule__Condition__Group__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1021:2: rule__Condition__Group__0__Impl rule__Condition__Group__1
            {
            pushFollow(FOLLOW_rule__Condition__Group__0__Impl_in_rule__Condition__Group__02048);
            rule__Condition__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Condition__Group__1_in_rule__Condition__Group__02051);
            rule__Condition__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group__0"


    // $ANTLR start "rule__Condition__Group__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1028:1: rule__Condition__Group__0__Impl : ( ruleExpression ) ;
    public final void rule__Condition__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1032:1: ( ( ruleExpression ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1033:1: ( ruleExpression )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1033:1: ( ruleExpression )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1034:1: ruleExpression
            {
             before(grammarAccess.getConditionAccess().getExpressionParserRuleCall_0()); 
            pushFollow(FOLLOW_ruleExpression_in_rule__Condition__Group__0__Impl2078);
            ruleExpression();

            state._fsp--;

             after(grammarAccess.getConditionAccess().getExpressionParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group__0__Impl"


    // $ANTLR start "rule__Condition__Group__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1045:1: rule__Condition__Group__1 : rule__Condition__Group__1__Impl rule__Condition__Group__2 ;
    public final void rule__Condition__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1049:1: ( rule__Condition__Group__1__Impl rule__Condition__Group__2 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1050:2: rule__Condition__Group__1__Impl rule__Condition__Group__2
            {
            pushFollow(FOLLOW_rule__Condition__Group__1__Impl_in_rule__Condition__Group__12107);
            rule__Condition__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Condition__Group__2_in_rule__Condition__Group__12110);
            rule__Condition__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group__1"


    // $ANTLR start "rule__Condition__Group__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1057:1: rule__Condition__Group__1__Impl : ( ( rule__Condition__Alternatives_1 ) ) ;
    public final void rule__Condition__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1061:1: ( ( ( rule__Condition__Alternatives_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1062:1: ( ( rule__Condition__Alternatives_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1062:1: ( ( rule__Condition__Alternatives_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1063:1: ( rule__Condition__Alternatives_1 )
            {
             before(grammarAccess.getConditionAccess().getAlternatives_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1064:1: ( rule__Condition__Alternatives_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1064:2: rule__Condition__Alternatives_1
            {
            pushFollow(FOLLOW_rule__Condition__Alternatives_1_in_rule__Condition__Group__1__Impl2137);
            rule__Condition__Alternatives_1();

            state._fsp--;


            }

             after(grammarAccess.getConditionAccess().getAlternatives_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group__1__Impl"


    // $ANTLR start "rule__Condition__Group__2"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1074:1: rule__Condition__Group__2 : rule__Condition__Group__2__Impl ;
    public final void rule__Condition__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1078:1: ( rule__Condition__Group__2__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1079:2: rule__Condition__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__Condition__Group__2__Impl_in_rule__Condition__Group__22167);
            rule__Condition__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group__2"


    // $ANTLR start "rule__Condition__Group__2__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1085:1: rule__Condition__Group__2__Impl : ( ( rule__Condition__RightAssignment_2 ) ) ;
    public final void rule__Condition__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1089:1: ( ( ( rule__Condition__RightAssignment_2 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1090:1: ( ( rule__Condition__RightAssignment_2 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1090:1: ( ( rule__Condition__RightAssignment_2 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1091:1: ( rule__Condition__RightAssignment_2 )
            {
             before(grammarAccess.getConditionAccess().getRightAssignment_2()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1092:1: ( rule__Condition__RightAssignment_2 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1092:2: rule__Condition__RightAssignment_2
            {
            pushFollow(FOLLOW_rule__Condition__RightAssignment_2_in_rule__Condition__Group__2__Impl2194);
            rule__Condition__RightAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getConditionAccess().getRightAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group__2__Impl"


    // $ANTLR start "rule__Condition__Group_1_0__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1108:1: rule__Condition__Group_1_0__0 : rule__Condition__Group_1_0__0__Impl rule__Condition__Group_1_0__1 ;
    public final void rule__Condition__Group_1_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1112:1: ( rule__Condition__Group_1_0__0__Impl rule__Condition__Group_1_0__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1113:2: rule__Condition__Group_1_0__0__Impl rule__Condition__Group_1_0__1
            {
            pushFollow(FOLLOW_rule__Condition__Group_1_0__0__Impl_in_rule__Condition__Group_1_0__02230);
            rule__Condition__Group_1_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Condition__Group_1_0__1_in_rule__Condition__Group_1_0__02233);
            rule__Condition__Group_1_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_0__0"


    // $ANTLR start "rule__Condition__Group_1_0__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1120:1: rule__Condition__Group_1_0__0__Impl : ( () ) ;
    public final void rule__Condition__Group_1_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1124:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1125:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1125:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1126:1: ()
            {
             before(grammarAccess.getConditionAccess().getGreaterThanLeftAction_1_0_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1127:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1129:1: 
            {
            }

             after(grammarAccess.getConditionAccess().getGreaterThanLeftAction_1_0_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_0__0__Impl"


    // $ANTLR start "rule__Condition__Group_1_0__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1139:1: rule__Condition__Group_1_0__1 : rule__Condition__Group_1_0__1__Impl ;
    public final void rule__Condition__Group_1_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1143:1: ( rule__Condition__Group_1_0__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1144:2: rule__Condition__Group_1_0__1__Impl
            {
            pushFollow(FOLLOW_rule__Condition__Group_1_0__1__Impl_in_rule__Condition__Group_1_0__12291);
            rule__Condition__Group_1_0__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_0__1"


    // $ANTLR start "rule__Condition__Group_1_0__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1150:1: rule__Condition__Group_1_0__1__Impl : ( '>' ) ;
    public final void rule__Condition__Group_1_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1154:1: ( ( '>' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1155:1: ( '>' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1155:1: ( '>' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1156:1: '>'
            {
             before(grammarAccess.getConditionAccess().getGreaterThanSignKeyword_1_0_1()); 
            match(input,17,FOLLOW_17_in_rule__Condition__Group_1_0__1__Impl2319); 
             after(grammarAccess.getConditionAccess().getGreaterThanSignKeyword_1_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_0__1__Impl"


    // $ANTLR start "rule__Condition__Group_1_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1173:1: rule__Condition__Group_1_1__0 : rule__Condition__Group_1_1__0__Impl rule__Condition__Group_1_1__1 ;
    public final void rule__Condition__Group_1_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1177:1: ( rule__Condition__Group_1_1__0__Impl rule__Condition__Group_1_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1178:2: rule__Condition__Group_1_1__0__Impl rule__Condition__Group_1_1__1
            {
            pushFollow(FOLLOW_rule__Condition__Group_1_1__0__Impl_in_rule__Condition__Group_1_1__02354);
            rule__Condition__Group_1_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Condition__Group_1_1__1_in_rule__Condition__Group_1_1__02357);
            rule__Condition__Group_1_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_1__0"


    // $ANTLR start "rule__Condition__Group_1_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1185:1: rule__Condition__Group_1_1__0__Impl : ( () ) ;
    public final void rule__Condition__Group_1_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1189:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1190:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1190:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1191:1: ()
            {
             before(grammarAccess.getConditionAccess().getLessThanLeftAction_1_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1192:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1194:1: 
            {
            }

             after(grammarAccess.getConditionAccess().getLessThanLeftAction_1_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_1__0__Impl"


    // $ANTLR start "rule__Condition__Group_1_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1204:1: rule__Condition__Group_1_1__1 : rule__Condition__Group_1_1__1__Impl ;
    public final void rule__Condition__Group_1_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1208:1: ( rule__Condition__Group_1_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1209:2: rule__Condition__Group_1_1__1__Impl
            {
            pushFollow(FOLLOW_rule__Condition__Group_1_1__1__Impl_in_rule__Condition__Group_1_1__12415);
            rule__Condition__Group_1_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_1__1"


    // $ANTLR start "rule__Condition__Group_1_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1215:1: rule__Condition__Group_1_1__1__Impl : ( '<' ) ;
    public final void rule__Condition__Group_1_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1219:1: ( ( '<' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1220:1: ( '<' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1220:1: ( '<' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1221:1: '<'
            {
             before(grammarAccess.getConditionAccess().getLessThanSignKeyword_1_1_1()); 
            match(input,18,FOLLOW_18_in_rule__Condition__Group_1_1__1__Impl2443); 
             after(grammarAccess.getConditionAccess().getLessThanSignKeyword_1_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_1__1__Impl"


    // $ANTLR start "rule__Condition__Group_1_2__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1238:1: rule__Condition__Group_1_2__0 : rule__Condition__Group_1_2__0__Impl rule__Condition__Group_1_2__1 ;
    public final void rule__Condition__Group_1_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1242:1: ( rule__Condition__Group_1_2__0__Impl rule__Condition__Group_1_2__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1243:2: rule__Condition__Group_1_2__0__Impl rule__Condition__Group_1_2__1
            {
            pushFollow(FOLLOW_rule__Condition__Group_1_2__0__Impl_in_rule__Condition__Group_1_2__02478);
            rule__Condition__Group_1_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Condition__Group_1_2__1_in_rule__Condition__Group_1_2__02481);
            rule__Condition__Group_1_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_2__0"


    // $ANTLR start "rule__Condition__Group_1_2__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1250:1: rule__Condition__Group_1_2__0__Impl : ( () ) ;
    public final void rule__Condition__Group_1_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1254:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1255:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1255:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1256:1: ()
            {
             before(grammarAccess.getConditionAccess().getEqualToLeftAction_1_2_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1257:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1259:1: 
            {
            }

             after(grammarAccess.getConditionAccess().getEqualToLeftAction_1_2_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_2__0__Impl"


    // $ANTLR start "rule__Condition__Group_1_2__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1269:1: rule__Condition__Group_1_2__1 : rule__Condition__Group_1_2__1__Impl ;
    public final void rule__Condition__Group_1_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1273:1: ( rule__Condition__Group_1_2__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1274:2: rule__Condition__Group_1_2__1__Impl
            {
            pushFollow(FOLLOW_rule__Condition__Group_1_2__1__Impl_in_rule__Condition__Group_1_2__12539);
            rule__Condition__Group_1_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_2__1"


    // $ANTLR start "rule__Condition__Group_1_2__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1280:1: rule__Condition__Group_1_2__1__Impl : ( '=' ) ;
    public final void rule__Condition__Group_1_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1284:1: ( ( '=' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1285:1: ( '=' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1285:1: ( '=' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1286:1: '='
            {
             before(grammarAccess.getConditionAccess().getEqualsSignKeyword_1_2_1()); 
            match(input,19,FOLLOW_19_in_rule__Condition__Group_1_2__1__Impl2567); 
             after(grammarAccess.getConditionAccess().getEqualsSignKeyword_1_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__Group_1_2__1__Impl"


    // $ANTLR start "rule__Addition__Group__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1303:1: rule__Addition__Group__0 : rule__Addition__Group__0__Impl rule__Addition__Group__1 ;
    public final void rule__Addition__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1307:1: ( rule__Addition__Group__0__Impl rule__Addition__Group__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1308:2: rule__Addition__Group__0__Impl rule__Addition__Group__1
            {
            pushFollow(FOLLOW_rule__Addition__Group__0__Impl_in_rule__Addition__Group__02602);
            rule__Addition__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Addition__Group__1_in_rule__Addition__Group__02605);
            rule__Addition__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__0"


    // $ANTLR start "rule__Addition__Group__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1315:1: rule__Addition__Group__0__Impl : ( ruleMultiplication ) ;
    public final void rule__Addition__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1319:1: ( ( ruleMultiplication ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1320:1: ( ruleMultiplication )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1320:1: ( ruleMultiplication )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1321:1: ruleMultiplication
            {
             before(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0()); 
            pushFollow(FOLLOW_ruleMultiplication_in_rule__Addition__Group__0__Impl2632);
            ruleMultiplication();

            state._fsp--;

             after(grammarAccess.getAdditionAccess().getMultiplicationParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__0__Impl"


    // $ANTLR start "rule__Addition__Group__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1332:1: rule__Addition__Group__1 : rule__Addition__Group__1__Impl ;
    public final void rule__Addition__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1336:1: ( rule__Addition__Group__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1337:2: rule__Addition__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__Addition__Group__1__Impl_in_rule__Addition__Group__12661);
            rule__Addition__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__1"


    // $ANTLR start "rule__Addition__Group__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1343:1: rule__Addition__Group__1__Impl : ( ( rule__Addition__Group_1__0 )* ) ;
    public final void rule__Addition__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1347:1: ( ( ( rule__Addition__Group_1__0 )* ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1348:1: ( ( rule__Addition__Group_1__0 )* )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1348:1: ( ( rule__Addition__Group_1__0 )* )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1349:1: ( rule__Addition__Group_1__0 )*
            {
             before(grammarAccess.getAdditionAccess().getGroup_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1350:1: ( rule__Addition__Group_1__0 )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>=20 && LA10_0<=21)) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1350:2: rule__Addition__Group_1__0
            	    {
            	    pushFollow(FOLLOW_rule__Addition__Group_1__0_in_rule__Addition__Group__1__Impl2688);
            	    rule__Addition__Group_1__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

             after(grammarAccess.getAdditionAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group__1__Impl"


    // $ANTLR start "rule__Addition__Group_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1364:1: rule__Addition__Group_1__0 : rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1 ;
    public final void rule__Addition__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1368:1: ( rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1369:2: rule__Addition__Group_1__0__Impl rule__Addition__Group_1__1
            {
            pushFollow(FOLLOW_rule__Addition__Group_1__0__Impl_in_rule__Addition__Group_1__02723);
            rule__Addition__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Addition__Group_1__1_in_rule__Addition__Group_1__02726);
            rule__Addition__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__0"


    // $ANTLR start "rule__Addition__Group_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1376:1: rule__Addition__Group_1__0__Impl : ( ( rule__Addition__Alternatives_1_0 ) ) ;
    public final void rule__Addition__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1380:1: ( ( ( rule__Addition__Alternatives_1_0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1381:1: ( ( rule__Addition__Alternatives_1_0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1381:1: ( ( rule__Addition__Alternatives_1_0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1382:1: ( rule__Addition__Alternatives_1_0 )
            {
             before(grammarAccess.getAdditionAccess().getAlternatives_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1383:1: ( rule__Addition__Alternatives_1_0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1383:2: rule__Addition__Alternatives_1_0
            {
            pushFollow(FOLLOW_rule__Addition__Alternatives_1_0_in_rule__Addition__Group_1__0__Impl2753);
            rule__Addition__Alternatives_1_0();

            state._fsp--;


            }

             after(grammarAccess.getAdditionAccess().getAlternatives_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__0__Impl"


    // $ANTLR start "rule__Addition__Group_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1393:1: rule__Addition__Group_1__1 : rule__Addition__Group_1__1__Impl ;
    public final void rule__Addition__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1397:1: ( rule__Addition__Group_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1398:2: rule__Addition__Group_1__1__Impl
            {
            pushFollow(FOLLOW_rule__Addition__Group_1__1__Impl_in_rule__Addition__Group_1__12783);
            rule__Addition__Group_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__1"


    // $ANTLR start "rule__Addition__Group_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1404:1: rule__Addition__Group_1__1__Impl : ( ( rule__Addition__RightAssignment_1_1 ) ) ;
    public final void rule__Addition__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1408:1: ( ( ( rule__Addition__RightAssignment_1_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1409:1: ( ( rule__Addition__RightAssignment_1_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1409:1: ( ( rule__Addition__RightAssignment_1_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1410:1: ( rule__Addition__RightAssignment_1_1 )
            {
             before(grammarAccess.getAdditionAccess().getRightAssignment_1_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1411:1: ( rule__Addition__RightAssignment_1_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1411:2: rule__Addition__RightAssignment_1_1
            {
            pushFollow(FOLLOW_rule__Addition__RightAssignment_1_1_in_rule__Addition__Group_1__1__Impl2810);
            rule__Addition__RightAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getAdditionAccess().getRightAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1__1__Impl"


    // $ANTLR start "rule__Addition__Group_1_0_0__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1425:1: rule__Addition__Group_1_0_0__0 : rule__Addition__Group_1_0_0__0__Impl rule__Addition__Group_1_0_0__1 ;
    public final void rule__Addition__Group_1_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1429:1: ( rule__Addition__Group_1_0_0__0__Impl rule__Addition__Group_1_0_0__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1430:2: rule__Addition__Group_1_0_0__0__Impl rule__Addition__Group_1_0_0__1
            {
            pushFollow(FOLLOW_rule__Addition__Group_1_0_0__0__Impl_in_rule__Addition__Group_1_0_0__02844);
            rule__Addition__Group_1_0_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Addition__Group_1_0_0__1_in_rule__Addition__Group_1_0_0__02847);
            rule__Addition__Group_1_0_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_0__0"


    // $ANTLR start "rule__Addition__Group_1_0_0__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1437:1: rule__Addition__Group_1_0_0__0__Impl : ( () ) ;
    public final void rule__Addition__Group_1_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1441:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1442:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1442:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1443:1: ()
            {
             before(grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1444:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1446:1: 
            {
            }

             after(grammarAccess.getAdditionAccess().getPlusLeftAction_1_0_0_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_0__0__Impl"


    // $ANTLR start "rule__Addition__Group_1_0_0__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1456:1: rule__Addition__Group_1_0_0__1 : rule__Addition__Group_1_0_0__1__Impl ;
    public final void rule__Addition__Group_1_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1460:1: ( rule__Addition__Group_1_0_0__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1461:2: rule__Addition__Group_1_0_0__1__Impl
            {
            pushFollow(FOLLOW_rule__Addition__Group_1_0_0__1__Impl_in_rule__Addition__Group_1_0_0__12905);
            rule__Addition__Group_1_0_0__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_0__1"


    // $ANTLR start "rule__Addition__Group_1_0_0__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1467:1: rule__Addition__Group_1_0_0__1__Impl : ( '+' ) ;
    public final void rule__Addition__Group_1_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1471:1: ( ( '+' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1472:1: ( '+' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1472:1: ( '+' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1473:1: '+'
            {
             before(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1()); 
            match(input,20,FOLLOW_20_in_rule__Addition__Group_1_0_0__1__Impl2933); 
             after(grammarAccess.getAdditionAccess().getPlusSignKeyword_1_0_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_0__1__Impl"


    // $ANTLR start "rule__Addition__Group_1_0_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1490:1: rule__Addition__Group_1_0_1__0 : rule__Addition__Group_1_0_1__0__Impl rule__Addition__Group_1_0_1__1 ;
    public final void rule__Addition__Group_1_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1494:1: ( rule__Addition__Group_1_0_1__0__Impl rule__Addition__Group_1_0_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1495:2: rule__Addition__Group_1_0_1__0__Impl rule__Addition__Group_1_0_1__1
            {
            pushFollow(FOLLOW_rule__Addition__Group_1_0_1__0__Impl_in_rule__Addition__Group_1_0_1__02968);
            rule__Addition__Group_1_0_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Addition__Group_1_0_1__1_in_rule__Addition__Group_1_0_1__02971);
            rule__Addition__Group_1_0_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_1__0"


    // $ANTLR start "rule__Addition__Group_1_0_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1502:1: rule__Addition__Group_1_0_1__0__Impl : ( () ) ;
    public final void rule__Addition__Group_1_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1506:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1507:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1507:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1508:1: ()
            {
             before(grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1509:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1511:1: 
            {
            }

             after(grammarAccess.getAdditionAccess().getMinusLeftAction_1_0_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_1__0__Impl"


    // $ANTLR start "rule__Addition__Group_1_0_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1521:1: rule__Addition__Group_1_0_1__1 : rule__Addition__Group_1_0_1__1__Impl ;
    public final void rule__Addition__Group_1_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1525:1: ( rule__Addition__Group_1_0_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1526:2: rule__Addition__Group_1_0_1__1__Impl
            {
            pushFollow(FOLLOW_rule__Addition__Group_1_0_1__1__Impl_in_rule__Addition__Group_1_0_1__13029);
            rule__Addition__Group_1_0_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_1__1"


    // $ANTLR start "rule__Addition__Group_1_0_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1532:1: rule__Addition__Group_1_0_1__1__Impl : ( '-' ) ;
    public final void rule__Addition__Group_1_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1536:1: ( ( '-' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1537:1: ( '-' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1537:1: ( '-' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1538:1: '-'
            {
             before(grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1()); 
            match(input,21,FOLLOW_21_in_rule__Addition__Group_1_0_1__1__Impl3057); 
             after(grammarAccess.getAdditionAccess().getHyphenMinusKeyword_1_0_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__Group_1_0_1__1__Impl"


    // $ANTLR start "rule__Multiplication__Group__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1555:1: rule__Multiplication__Group__0 : rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1 ;
    public final void rule__Multiplication__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1559:1: ( rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1560:2: rule__Multiplication__Group__0__Impl rule__Multiplication__Group__1
            {
            pushFollow(FOLLOW_rule__Multiplication__Group__0__Impl_in_rule__Multiplication__Group__03092);
            rule__Multiplication__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplication__Group__1_in_rule__Multiplication__Group__03095);
            rule__Multiplication__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__0"


    // $ANTLR start "rule__Multiplication__Group__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1567:1: rule__Multiplication__Group__0__Impl : ( rulePrimaryExpression ) ;
    public final void rule__Multiplication__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1571:1: ( ( rulePrimaryExpression ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1572:1: ( rulePrimaryExpression )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1572:1: ( rulePrimaryExpression )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1573:1: rulePrimaryExpression
            {
             before(grammarAccess.getMultiplicationAccess().getPrimaryExpressionParserRuleCall_0()); 
            pushFollow(FOLLOW_rulePrimaryExpression_in_rule__Multiplication__Group__0__Impl3122);
            rulePrimaryExpression();

            state._fsp--;

             after(grammarAccess.getMultiplicationAccess().getPrimaryExpressionParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__0__Impl"


    // $ANTLR start "rule__Multiplication__Group__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1584:1: rule__Multiplication__Group__1 : rule__Multiplication__Group__1__Impl ;
    public final void rule__Multiplication__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1588:1: ( rule__Multiplication__Group__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1589:2: rule__Multiplication__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplication__Group__1__Impl_in_rule__Multiplication__Group__13151);
            rule__Multiplication__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__1"


    // $ANTLR start "rule__Multiplication__Group__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1595:1: rule__Multiplication__Group__1__Impl : ( ( rule__Multiplication__Group_1__0 )* ) ;
    public final void rule__Multiplication__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1599:1: ( ( ( rule__Multiplication__Group_1__0 )* ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1600:1: ( ( rule__Multiplication__Group_1__0 )* )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1600:1: ( ( rule__Multiplication__Group_1__0 )* )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1601:1: ( rule__Multiplication__Group_1__0 )*
            {
             before(grammarAccess.getMultiplicationAccess().getGroup_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1602:1: ( rule__Multiplication__Group_1__0 )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( ((LA11_0>=22 && LA11_0<=24)) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1602:2: rule__Multiplication__Group_1__0
            	    {
            	    pushFollow(FOLLOW_rule__Multiplication__Group_1__0_in_rule__Multiplication__Group__1__Impl3178);
            	    rule__Multiplication__Group_1__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

             after(grammarAccess.getMultiplicationAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group__1__Impl"


    // $ANTLR start "rule__Multiplication__Group_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1616:1: rule__Multiplication__Group_1__0 : rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1 ;
    public final void rule__Multiplication__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1620:1: ( rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1621:2: rule__Multiplication__Group_1__0__Impl rule__Multiplication__Group_1__1
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1__0__Impl_in_rule__Multiplication__Group_1__03213);
            rule__Multiplication__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplication__Group_1__1_in_rule__Multiplication__Group_1__03216);
            rule__Multiplication__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__0"


    // $ANTLR start "rule__Multiplication__Group_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1628:1: rule__Multiplication__Group_1__0__Impl : ( ( rule__Multiplication__Alternatives_1_0 ) ) ;
    public final void rule__Multiplication__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1632:1: ( ( ( rule__Multiplication__Alternatives_1_0 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1633:1: ( ( rule__Multiplication__Alternatives_1_0 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1633:1: ( ( rule__Multiplication__Alternatives_1_0 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1634:1: ( rule__Multiplication__Alternatives_1_0 )
            {
             before(grammarAccess.getMultiplicationAccess().getAlternatives_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1635:1: ( rule__Multiplication__Alternatives_1_0 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1635:2: rule__Multiplication__Alternatives_1_0
            {
            pushFollow(FOLLOW_rule__Multiplication__Alternatives_1_0_in_rule__Multiplication__Group_1__0__Impl3243);
            rule__Multiplication__Alternatives_1_0();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicationAccess().getAlternatives_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__0__Impl"


    // $ANTLR start "rule__Multiplication__Group_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1645:1: rule__Multiplication__Group_1__1 : rule__Multiplication__Group_1__1__Impl ;
    public final void rule__Multiplication__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1649:1: ( rule__Multiplication__Group_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1650:2: rule__Multiplication__Group_1__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1__1__Impl_in_rule__Multiplication__Group_1__13273);
            rule__Multiplication__Group_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__1"


    // $ANTLR start "rule__Multiplication__Group_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1656:1: rule__Multiplication__Group_1__1__Impl : ( ( rule__Multiplication__RightAssignment_1_1 ) ) ;
    public final void rule__Multiplication__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1660:1: ( ( ( rule__Multiplication__RightAssignment_1_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1661:1: ( ( rule__Multiplication__RightAssignment_1_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1661:1: ( ( rule__Multiplication__RightAssignment_1_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1662:1: ( rule__Multiplication__RightAssignment_1_1 )
            {
             before(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1663:1: ( rule__Multiplication__RightAssignment_1_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1663:2: rule__Multiplication__RightAssignment_1_1
            {
            pushFollow(FOLLOW_rule__Multiplication__RightAssignment_1_1_in_rule__Multiplication__Group_1__1__Impl3300);
            rule__Multiplication__RightAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getMultiplicationAccess().getRightAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1__1__Impl"


    // $ANTLR start "rule__Multiplication__Group_1_0_0__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1677:1: rule__Multiplication__Group_1_0_0__0 : rule__Multiplication__Group_1_0_0__0__Impl rule__Multiplication__Group_1_0_0__1 ;
    public final void rule__Multiplication__Group_1_0_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1681:1: ( rule__Multiplication__Group_1_0_0__0__Impl rule__Multiplication__Group_1_0_0__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1682:2: rule__Multiplication__Group_1_0_0__0__Impl rule__Multiplication__Group_1_0_0__1
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__0__Impl_in_rule__Multiplication__Group_1_0_0__03334);
            rule__Multiplication__Group_1_0_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__1_in_rule__Multiplication__Group_1_0_0__03337);
            rule__Multiplication__Group_1_0_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_0__0"


    // $ANTLR start "rule__Multiplication__Group_1_0_0__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1689:1: rule__Multiplication__Group_1_0_0__0__Impl : ( () ) ;
    public final void rule__Multiplication__Group_1_0_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1693:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1694:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1694:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1695:1: ()
            {
             before(grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1696:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1698:1: 
            {
            }

             after(grammarAccess.getMultiplicationAccess().getMultiLeftAction_1_0_0_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_0__0__Impl"


    // $ANTLR start "rule__Multiplication__Group_1_0_0__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1708:1: rule__Multiplication__Group_1_0_0__1 : rule__Multiplication__Group_1_0_0__1__Impl ;
    public final void rule__Multiplication__Group_1_0_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1712:1: ( rule__Multiplication__Group_1_0_0__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1713:2: rule__Multiplication__Group_1_0_0__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_0__1__Impl_in_rule__Multiplication__Group_1_0_0__13395);
            rule__Multiplication__Group_1_0_0__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_0__1"


    // $ANTLR start "rule__Multiplication__Group_1_0_0__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1719:1: rule__Multiplication__Group_1_0_0__1__Impl : ( '*' ) ;
    public final void rule__Multiplication__Group_1_0_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1723:1: ( ( '*' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1724:1: ( '*' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1724:1: ( '*' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1725:1: '*'
            {
             before(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1()); 
            match(input,22,FOLLOW_22_in_rule__Multiplication__Group_1_0_0__1__Impl3423); 
             after(grammarAccess.getMultiplicationAccess().getAsteriskKeyword_1_0_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_0__1__Impl"


    // $ANTLR start "rule__Multiplication__Group_1_0_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1742:1: rule__Multiplication__Group_1_0_1__0 : rule__Multiplication__Group_1_0_1__0__Impl rule__Multiplication__Group_1_0_1__1 ;
    public final void rule__Multiplication__Group_1_0_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1746:1: ( rule__Multiplication__Group_1_0_1__0__Impl rule__Multiplication__Group_1_0_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1747:2: rule__Multiplication__Group_1_0_1__0__Impl rule__Multiplication__Group_1_0_1__1
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__0__Impl_in_rule__Multiplication__Group_1_0_1__03458);
            rule__Multiplication__Group_1_0_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__1_in_rule__Multiplication__Group_1_0_1__03461);
            rule__Multiplication__Group_1_0_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_1__0"


    // $ANTLR start "rule__Multiplication__Group_1_0_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1754:1: rule__Multiplication__Group_1_0_1__0__Impl : ( () ) ;
    public final void rule__Multiplication__Group_1_0_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1758:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1759:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1759:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1760:1: ()
            {
             before(grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1761:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1763:1: 
            {
            }

             after(grammarAccess.getMultiplicationAccess().getDivLeftAction_1_0_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_1__0__Impl"


    // $ANTLR start "rule__Multiplication__Group_1_0_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1773:1: rule__Multiplication__Group_1_0_1__1 : rule__Multiplication__Group_1_0_1__1__Impl ;
    public final void rule__Multiplication__Group_1_0_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1777:1: ( rule__Multiplication__Group_1_0_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1778:2: rule__Multiplication__Group_1_0_1__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_1__1__Impl_in_rule__Multiplication__Group_1_0_1__13519);
            rule__Multiplication__Group_1_0_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_1__1"


    // $ANTLR start "rule__Multiplication__Group_1_0_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1784:1: rule__Multiplication__Group_1_0_1__1__Impl : ( '/' ) ;
    public final void rule__Multiplication__Group_1_0_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1788:1: ( ( '/' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1789:1: ( '/' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1789:1: ( '/' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1790:1: '/'
            {
             before(grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1()); 
            match(input,23,FOLLOW_23_in_rule__Multiplication__Group_1_0_1__1__Impl3547); 
             after(grammarAccess.getMultiplicationAccess().getSolidusKeyword_1_0_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_1__1__Impl"


    // $ANTLR start "rule__Multiplication__Group_1_0_2__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1807:1: rule__Multiplication__Group_1_0_2__0 : rule__Multiplication__Group_1_0_2__0__Impl rule__Multiplication__Group_1_0_2__1 ;
    public final void rule__Multiplication__Group_1_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1811:1: ( rule__Multiplication__Group_1_0_2__0__Impl rule__Multiplication__Group_1_0_2__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1812:2: rule__Multiplication__Group_1_0_2__0__Impl rule__Multiplication__Group_1_0_2__1
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_2__0__Impl_in_rule__Multiplication__Group_1_0_2__03582);
            rule__Multiplication__Group_1_0_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_2__1_in_rule__Multiplication__Group_1_0_2__03585);
            rule__Multiplication__Group_1_0_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_2__0"


    // $ANTLR start "rule__Multiplication__Group_1_0_2__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1819:1: rule__Multiplication__Group_1_0_2__0__Impl : ( () ) ;
    public final void rule__Multiplication__Group_1_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1823:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1824:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1824:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1825:1: ()
            {
             before(grammarAccess.getMultiplicationAccess().getModLeftAction_1_0_2_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1826:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1828:1: 
            {
            }

             after(grammarAccess.getMultiplicationAccess().getModLeftAction_1_0_2_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_2__0__Impl"


    // $ANTLR start "rule__Multiplication__Group_1_0_2__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1838:1: rule__Multiplication__Group_1_0_2__1 : rule__Multiplication__Group_1_0_2__1__Impl ;
    public final void rule__Multiplication__Group_1_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1842:1: ( rule__Multiplication__Group_1_0_2__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1843:2: rule__Multiplication__Group_1_0_2__1__Impl
            {
            pushFollow(FOLLOW_rule__Multiplication__Group_1_0_2__1__Impl_in_rule__Multiplication__Group_1_0_2__13643);
            rule__Multiplication__Group_1_0_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_2__1"


    // $ANTLR start "rule__Multiplication__Group_1_0_2__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1849:1: rule__Multiplication__Group_1_0_2__1__Impl : ( '%' ) ;
    public final void rule__Multiplication__Group_1_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1853:1: ( ( '%' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1854:1: ( '%' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1854:1: ( '%' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1855:1: '%'
            {
             before(grammarAccess.getMultiplicationAccess().getPercentSignKeyword_1_0_2_1()); 
            match(input,24,FOLLOW_24_in_rule__Multiplication__Group_1_0_2__1__Impl3671); 
             after(grammarAccess.getMultiplicationAccess().getPercentSignKeyword_1_0_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__Group_1_0_2__1__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_0__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1872:1: rule__PrimaryExpression__Group_0__0 : rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 ;
    public final void rule__PrimaryExpression__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1876:1: ( rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1877:2: rule__PrimaryExpression__Group_0__0__Impl rule__PrimaryExpression__Group_0__1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__0__Impl_in_rule__PrimaryExpression__Group_0__03706);
            rule__PrimaryExpression__Group_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__1_in_rule__PrimaryExpression__Group_0__03709);
            rule__PrimaryExpression__Group_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_0__0"


    // $ANTLR start "rule__PrimaryExpression__Group_0__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1884:1: rule__PrimaryExpression__Group_0__0__Impl : ( '(' ) ;
    public final void rule__PrimaryExpression__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1888:1: ( ( '(' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1889:1: ( '(' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1889:1: ( '(' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1890:1: '('
            {
             before(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_0_0()); 
            match(input,25,FOLLOW_25_in_rule__PrimaryExpression__Group_0__0__Impl3737); 
             after(grammarAccess.getPrimaryExpressionAccess().getLeftParenthesisKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_0__0__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_0__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1903:1: rule__PrimaryExpression__Group_0__1 : rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2 ;
    public final void rule__PrimaryExpression__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1907:1: ( rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1908:2: rule__PrimaryExpression__Group_0__1__Impl rule__PrimaryExpression__Group_0__2
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__1__Impl_in_rule__PrimaryExpression__Group_0__13768);
            rule__PrimaryExpression__Group_0__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__2_in_rule__PrimaryExpression__Group_0__13771);
            rule__PrimaryExpression__Group_0__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_0__1"


    // $ANTLR start "rule__PrimaryExpression__Group_0__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1915:1: rule__PrimaryExpression__Group_0__1__Impl : ( ( rule__PrimaryExpression__BrackexprAssignment_0_1 ) ) ;
    public final void rule__PrimaryExpression__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1919:1: ( ( ( rule__PrimaryExpression__BrackexprAssignment_0_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1920:1: ( ( rule__PrimaryExpression__BrackexprAssignment_0_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1920:1: ( ( rule__PrimaryExpression__BrackexprAssignment_0_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1921:1: ( rule__PrimaryExpression__BrackexprAssignment_0_1 )
            {
             before(grammarAccess.getPrimaryExpressionAccess().getBrackexprAssignment_0_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1922:1: ( rule__PrimaryExpression__BrackexprAssignment_0_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1922:2: rule__PrimaryExpression__BrackexprAssignment_0_1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__BrackexprAssignment_0_1_in_rule__PrimaryExpression__Group_0__1__Impl3798);
            rule__PrimaryExpression__BrackexprAssignment_0_1();

            state._fsp--;


            }

             after(grammarAccess.getPrimaryExpressionAccess().getBrackexprAssignment_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_0__1__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_0__2"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1932:1: rule__PrimaryExpression__Group_0__2 : rule__PrimaryExpression__Group_0__2__Impl ;
    public final void rule__PrimaryExpression__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1936:1: ( rule__PrimaryExpression__Group_0__2__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1937:2: rule__PrimaryExpression__Group_0__2__Impl
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_0__2__Impl_in_rule__PrimaryExpression__Group_0__23828);
            rule__PrimaryExpression__Group_0__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_0__2"


    // $ANTLR start "rule__PrimaryExpression__Group_0__2__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1943:1: rule__PrimaryExpression__Group_0__2__Impl : ( ')' ) ;
    public final void rule__PrimaryExpression__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1947:1: ( ( ')' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1948:1: ( ')' )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1948:1: ( ')' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1949:1: ')'
            {
             before(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_0_2()); 
            match(input,26,FOLLOW_26_in_rule__PrimaryExpression__Group_0__2__Impl3856); 
             after(grammarAccess.getPrimaryExpressionAccess().getRightParenthesisKeyword_0_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_0__2__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_1__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1968:1: rule__PrimaryExpression__Group_1__0 : rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 ;
    public final void rule__PrimaryExpression__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1972:1: ( rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1973:2: rule__PrimaryExpression__Group_1__0__Impl rule__PrimaryExpression__Group_1__1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__0__Impl_in_rule__PrimaryExpression__Group_1__03893);
            rule__PrimaryExpression__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__1_in_rule__PrimaryExpression__Group_1__03896);
            rule__PrimaryExpression__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_1__0"


    // $ANTLR start "rule__PrimaryExpression__Group_1__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1980:1: rule__PrimaryExpression__Group_1__0__Impl : ( () ) ;
    public final void rule__PrimaryExpression__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1984:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1985:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1985:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1986:1: ()
            {
             before(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1987:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1989:1: 
            {
            }

             after(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_1_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_1__0__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_1__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:1999:1: rule__PrimaryExpression__Group_1__1 : rule__PrimaryExpression__Group_1__1__Impl ;
    public final void rule__PrimaryExpression__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2003:1: ( rule__PrimaryExpression__Group_1__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2004:2: rule__PrimaryExpression__Group_1__1__Impl
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_1__1__Impl_in_rule__PrimaryExpression__Group_1__13954);
            rule__PrimaryExpression__Group_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_1__1"


    // $ANTLR start "rule__PrimaryExpression__Group_1__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2010:1: rule__PrimaryExpression__Group_1__1__Impl : ( ( rule__PrimaryExpression__ValueAssignment_1_1 ) ) ;
    public final void rule__PrimaryExpression__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2014:1: ( ( ( rule__PrimaryExpression__ValueAssignment_1_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2015:1: ( ( rule__PrimaryExpression__ValueAssignment_1_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2015:1: ( ( rule__PrimaryExpression__ValueAssignment_1_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2016:1: ( rule__PrimaryExpression__ValueAssignment_1_1 )
            {
             before(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_1_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2017:1: ( rule__PrimaryExpression__ValueAssignment_1_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2017:2: rule__PrimaryExpression__ValueAssignment_1_1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__ValueAssignment_1_1_in_rule__PrimaryExpression__Group_1__1__Impl3981);
            rule__PrimaryExpression__ValueAssignment_1_1();

            state._fsp--;


            }

             after(grammarAccess.getPrimaryExpressionAccess().getValueAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_1__1__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_2__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2031:1: rule__PrimaryExpression__Group_2__0 : rule__PrimaryExpression__Group_2__0__Impl rule__PrimaryExpression__Group_2__1 ;
    public final void rule__PrimaryExpression__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2035:1: ( rule__PrimaryExpression__Group_2__0__Impl rule__PrimaryExpression__Group_2__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2036:2: rule__PrimaryExpression__Group_2__0__Impl rule__PrimaryExpression__Group_2__1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__0__Impl_in_rule__PrimaryExpression__Group_2__04015);
            rule__PrimaryExpression__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__1_in_rule__PrimaryExpression__Group_2__04018);
            rule__PrimaryExpression__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_2__0"


    // $ANTLR start "rule__PrimaryExpression__Group_2__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2043:1: rule__PrimaryExpression__Group_2__0__Impl : ( () ) ;
    public final void rule__PrimaryExpression__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2047:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2048:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2048:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2049:1: ()
            {
             before(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_2_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2050:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2052:1: 
            {
            }

             after(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_2_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_2__0__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_2__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2062:1: rule__PrimaryExpression__Group_2__1 : rule__PrimaryExpression__Group_2__1__Impl ;
    public final void rule__PrimaryExpression__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2066:1: ( rule__PrimaryExpression__Group_2__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2067:2: rule__PrimaryExpression__Group_2__1__Impl
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_2__1__Impl_in_rule__PrimaryExpression__Group_2__14076);
            rule__PrimaryExpression__Group_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_2__1"


    // $ANTLR start "rule__PrimaryExpression__Group_2__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2073:1: rule__PrimaryExpression__Group_2__1__Impl : ( ( rule__PrimaryExpression__ModeAssignment_2_1 ) ) ;
    public final void rule__PrimaryExpression__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2077:1: ( ( ( rule__PrimaryExpression__ModeAssignment_2_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2078:1: ( ( rule__PrimaryExpression__ModeAssignment_2_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2078:1: ( ( rule__PrimaryExpression__ModeAssignment_2_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2079:1: ( rule__PrimaryExpression__ModeAssignment_2_1 )
            {
             before(grammarAccess.getPrimaryExpressionAccess().getModeAssignment_2_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2080:1: ( rule__PrimaryExpression__ModeAssignment_2_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2080:2: rule__PrimaryExpression__ModeAssignment_2_1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__ModeAssignment_2_1_in_rule__PrimaryExpression__Group_2__1__Impl4103);
            rule__PrimaryExpression__ModeAssignment_2_1();

            state._fsp--;


            }

             after(grammarAccess.getPrimaryExpressionAccess().getModeAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_2__1__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_3__0"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2094:1: rule__PrimaryExpression__Group_3__0 : rule__PrimaryExpression__Group_3__0__Impl rule__PrimaryExpression__Group_3__1 ;
    public final void rule__PrimaryExpression__Group_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2098:1: ( rule__PrimaryExpression__Group_3__0__Impl rule__PrimaryExpression__Group_3__1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2099:2: rule__PrimaryExpression__Group_3__0__Impl rule__PrimaryExpression__Group_3__1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__0__Impl_in_rule__PrimaryExpression__Group_3__04137);
            rule__PrimaryExpression__Group_3__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__1_in_rule__PrimaryExpression__Group_3__04140);
            rule__PrimaryExpression__Group_3__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_3__0"


    // $ANTLR start "rule__PrimaryExpression__Group_3__0__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2106:1: rule__PrimaryExpression__Group_3__0__Impl : ( () ) ;
    public final void rule__PrimaryExpression__Group_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2110:1: ( ( () ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2111:1: ( () )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2111:1: ( () )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2112:1: ()
            {
             before(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_3_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2113:1: ()
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2115:1: 
            {
            }

             after(grammarAccess.getPrimaryExpressionAccess().getNumberLiteralAction_3_0()); 

            }


            }

        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_3__0__Impl"


    // $ANTLR start "rule__PrimaryExpression__Group_3__1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2125:1: rule__PrimaryExpression__Group_3__1 : rule__PrimaryExpression__Group_3__1__Impl ;
    public final void rule__PrimaryExpression__Group_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2129:1: ( rule__PrimaryExpression__Group_3__1__Impl )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2130:2: rule__PrimaryExpression__Group_3__1__Impl
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__Group_3__1__Impl_in_rule__PrimaryExpression__Group_3__14198);
            rule__PrimaryExpression__Group_3__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_3__1"


    // $ANTLR start "rule__PrimaryExpression__Group_3__1__Impl"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2136:1: rule__PrimaryExpression__Group_3__1__Impl : ( ( rule__PrimaryExpression__BimAssignment_3_1 ) ) ;
    public final void rule__PrimaryExpression__Group_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2140:1: ( ( ( rule__PrimaryExpression__BimAssignment_3_1 ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2141:1: ( ( rule__PrimaryExpression__BimAssignment_3_1 ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2141:1: ( ( rule__PrimaryExpression__BimAssignment_3_1 ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2142:1: ( rule__PrimaryExpression__BimAssignment_3_1 )
            {
             before(grammarAccess.getPrimaryExpressionAccess().getBimAssignment_3_1()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2143:1: ( rule__PrimaryExpression__BimAssignment_3_1 )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2143:2: rule__PrimaryExpression__BimAssignment_3_1
            {
            pushFollow(FOLLOW_rule__PrimaryExpression__BimAssignment_3_1_in_rule__PrimaryExpression__Group_3__1__Impl4225);
            rule__PrimaryExpression__BimAssignment_3_1();

            state._fsp--;


            }

             after(grammarAccess.getPrimaryExpressionAccess().getBimAssignment_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__Group_3__1__Impl"


    // $ANTLR start "rule__Model__ModesAssignment"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2158:1: rule__Model__ModesAssignment : ( ruleMode ) ;
    public final void rule__Model__ModesAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2162:1: ( ( ruleMode ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2163:1: ( ruleMode )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2163:1: ( ruleMode )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2164:1: ruleMode
            {
             before(grammarAccess.getModelAccess().getModesModeParserRuleCall_0()); 
            pushFollow(FOLLOW_ruleMode_in_rule__Model__ModesAssignment4264);
            ruleMode();

            state._fsp--;

             after(grammarAccess.getModelAccess().getModesModeParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__ModesAssignment"


    // $ANTLR start "rule__Mode__NameAssignment_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2173:1: rule__Mode__NameAssignment_1 : ( RULE_MNAME ) ;
    public final void rule__Mode__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2177:1: ( ( RULE_MNAME ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2178:1: ( RULE_MNAME )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2178:1: ( RULE_MNAME )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2179:1: RULE_MNAME
            {
             before(grammarAccess.getModeAccess().getNameMNAMETerminalRuleCall_1_0()); 
            match(input,RULE_MNAME,FOLLOW_RULE_MNAME_in_rule__Mode__NameAssignment_14295); 
             after(grammarAccess.getModeAccess().getNameMNAMETerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__NameAssignment_1"


    // $ANTLR start "rule__Mode__InvAssignment_2"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2188:1: rule__Mode__InvAssignment_2 : ( ( 'INVISIBLE' ) ) ;
    public final void rule__Mode__InvAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2192:1: ( ( ( 'INVISIBLE' ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2193:1: ( ( 'INVISIBLE' ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2193:1: ( ( 'INVISIBLE' ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2194:1: ( 'INVISIBLE' )
            {
             before(grammarAccess.getModeAccess().getInvINVISIBLEKeyword_2_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2195:1: ( 'INVISIBLE' )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2196:1: 'INVISIBLE'
            {
             before(grammarAccess.getModeAccess().getInvINVISIBLEKeyword_2_0()); 
            match(input,27,FOLLOW_27_in_rule__Mode__InvAssignment_24331); 
             after(grammarAccess.getModeAccess().getInvINVISIBLEKeyword_2_0()); 

            }

             after(grammarAccess.getModeAccess().getInvINVISIBLEKeyword_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__InvAssignment_2"


    // $ANTLR start "rule__Mode__TypeAssignment_4"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2211:1: rule__Mode__TypeAssignment_4 : ( RULE_TYPES ) ;
    public final void rule__Mode__TypeAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2215:1: ( ( RULE_TYPES ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2216:1: ( RULE_TYPES )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2216:1: ( RULE_TYPES )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2217:1: RULE_TYPES
            {
             before(grammarAccess.getModeAccess().getTypeTYPESTerminalRuleCall_4_0()); 
            match(input,RULE_TYPES,FOLLOW_RULE_TYPES_in_rule__Mode__TypeAssignment_44370); 
             after(grammarAccess.getModeAccess().getTypeTYPESTerminalRuleCall_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__TypeAssignment_4"


    // $ANTLR start "rule__Mode__ConditionAssignment_5_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2226:1: rule__Mode__ConditionAssignment_5_1 : ( ruleConditions ) ;
    public final void rule__Mode__ConditionAssignment_5_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2230:1: ( ( ruleConditions ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2231:1: ( ruleConditions )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2231:1: ( ruleConditions )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2232:1: ruleConditions
            {
             before(grammarAccess.getModeAccess().getConditionConditionsParserRuleCall_5_1_0()); 
            pushFollow(FOLLOW_ruleConditions_in_rule__Mode__ConditionAssignment_5_14401);
            ruleConditions();

            state._fsp--;

             after(grammarAccess.getModeAccess().getConditionConditionsParserRuleCall_5_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__ConditionAssignment_5_1"


    // $ANTLR start "rule__Mode__ExprAssignment_7"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2241:1: rule__Mode__ExprAssignment_7 : ( ruleExpression ) ;
    public final void rule__Mode__ExprAssignment_7() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2245:1: ( ( ruleExpression ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2246:1: ( ruleExpression )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2246:1: ( ruleExpression )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2247:1: ruleExpression
            {
             before(grammarAccess.getModeAccess().getExprExpressionParserRuleCall_7_0()); 
            pushFollow(FOLLOW_ruleExpression_in_rule__Mode__ExprAssignment_74432);
            ruleExpression();

            state._fsp--;

             after(grammarAccess.getModeAccess().getExprExpressionParserRuleCall_7_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Mode__ExprAssignment_7"


    // $ANTLR start "rule__CompoundCondition__RightAssignment_1_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2256:1: rule__CompoundCondition__RightAssignment_1_1 : ( ruleCondition ) ;
    public final void rule__CompoundCondition__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2260:1: ( ( ruleCondition ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2261:1: ( ruleCondition )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2261:1: ( ruleCondition )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2262:1: ruleCondition
            {
             before(grammarAccess.getCompoundConditionAccess().getRightConditionParserRuleCall_1_1_0()); 
            pushFollow(FOLLOW_ruleCondition_in_rule__CompoundCondition__RightAssignment_1_14463);
            ruleCondition();

            state._fsp--;

             after(grammarAccess.getCompoundConditionAccess().getRightConditionParserRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__CompoundCondition__RightAssignment_1_1"


    // $ANTLR start "rule__Condition__RightAssignment_2"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2271:1: rule__Condition__RightAssignment_2 : ( ruleExpression ) ;
    public final void rule__Condition__RightAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2275:1: ( ( ruleExpression ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2276:1: ( ruleExpression )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2276:1: ( ruleExpression )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2277:1: ruleExpression
            {
             before(grammarAccess.getConditionAccess().getRightExpressionParserRuleCall_2_0()); 
            pushFollow(FOLLOW_ruleExpression_in_rule__Condition__RightAssignment_24494);
            ruleExpression();

            state._fsp--;

             after(grammarAccess.getConditionAccess().getRightExpressionParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Condition__RightAssignment_2"


    // $ANTLR start "rule__Addition__RightAssignment_1_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2286:1: rule__Addition__RightAssignment_1_1 : ( ruleMultiplication ) ;
    public final void rule__Addition__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2290:1: ( ( ruleMultiplication ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2291:1: ( ruleMultiplication )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2291:1: ( ruleMultiplication )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2292:1: ruleMultiplication
            {
             before(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0()); 
            pushFollow(FOLLOW_ruleMultiplication_in_rule__Addition__RightAssignment_1_14525);
            ruleMultiplication();

            state._fsp--;

             after(grammarAccess.getAdditionAccess().getRightMultiplicationParserRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Addition__RightAssignment_1_1"


    // $ANTLR start "rule__Multiplication__RightAssignment_1_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2301:1: rule__Multiplication__RightAssignment_1_1 : ( rulePrimaryExpression ) ;
    public final void rule__Multiplication__RightAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2305:1: ( ( rulePrimaryExpression ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2306:1: ( rulePrimaryExpression )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2306:1: ( rulePrimaryExpression )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2307:1: rulePrimaryExpression
            {
             before(grammarAccess.getMultiplicationAccess().getRightPrimaryExpressionParserRuleCall_1_1_0()); 
            pushFollow(FOLLOW_rulePrimaryExpression_in_rule__Multiplication__RightAssignment_1_14556);
            rulePrimaryExpression();

            state._fsp--;

             after(grammarAccess.getMultiplicationAccess().getRightPrimaryExpressionParserRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Multiplication__RightAssignment_1_1"


    // $ANTLR start "rule__PrimaryExpression__BrackexprAssignment_0_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2316:1: rule__PrimaryExpression__BrackexprAssignment_0_1 : ( ruleExpression ) ;
    public final void rule__PrimaryExpression__BrackexprAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2320:1: ( ( ruleExpression ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2321:1: ( ruleExpression )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2321:1: ( ruleExpression )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2322:1: ruleExpression
            {
             before(grammarAccess.getPrimaryExpressionAccess().getBrackexprExpressionParserRuleCall_0_1_0()); 
            pushFollow(FOLLOW_ruleExpression_in_rule__PrimaryExpression__BrackexprAssignment_0_14587);
            ruleExpression();

            state._fsp--;

             after(grammarAccess.getPrimaryExpressionAccess().getBrackexprExpressionParserRuleCall_0_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__BrackexprAssignment_0_1"


    // $ANTLR start "rule__PrimaryExpression__ValueAssignment_1_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2331:1: rule__PrimaryExpression__ValueAssignment_1_1 : ( RULE_NUMBER ) ;
    public final void rule__PrimaryExpression__ValueAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2335:1: ( ( RULE_NUMBER ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2336:1: ( RULE_NUMBER )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2336:1: ( RULE_NUMBER )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2337:1: RULE_NUMBER
            {
             before(grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_1_1_0()); 
            match(input,RULE_NUMBER,FOLLOW_RULE_NUMBER_in_rule__PrimaryExpression__ValueAssignment_1_14618); 
             after(grammarAccess.getPrimaryExpressionAccess().getValueNUMBERTerminalRuleCall_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__ValueAssignment_1_1"


    // $ANTLR start "rule__PrimaryExpression__ModeAssignment_2_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2346:1: rule__PrimaryExpression__ModeAssignment_2_1 : ( ( RULE_MNAME ) ) ;
    public final void rule__PrimaryExpression__ModeAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2350:1: ( ( ( RULE_MNAME ) ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2351:1: ( ( RULE_MNAME ) )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2351:1: ( ( RULE_MNAME ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2352:1: ( RULE_MNAME )
            {
             before(grammarAccess.getPrimaryExpressionAccess().getModeModeCrossReference_2_1_0()); 
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2353:1: ( RULE_MNAME )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2354:1: RULE_MNAME
            {
             before(grammarAccess.getPrimaryExpressionAccess().getModeModeMNAMETerminalRuleCall_2_1_0_1()); 
            match(input,RULE_MNAME,FOLLOW_RULE_MNAME_in_rule__PrimaryExpression__ModeAssignment_2_14653); 
             after(grammarAccess.getPrimaryExpressionAccess().getModeModeMNAMETerminalRuleCall_2_1_0_1()); 

            }

             after(grammarAccess.getPrimaryExpressionAccess().getModeModeCrossReference_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__ModeAssignment_2_1"


    // $ANTLR start "rule__PrimaryExpression__BimAssignment_3_1"
    // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2365:1: rule__PrimaryExpression__BimAssignment_3_1 : ( RULE_BUILT_IN_MODES ) ;
    public final void rule__PrimaryExpression__BimAssignment_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2369:1: ( ( RULE_BUILT_IN_MODES ) )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2370:1: ( RULE_BUILT_IN_MODES )
            {
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2370:1: ( RULE_BUILT_IN_MODES )
            // ../edu.uwaterloo.bicycle.ui/src-gen/edu/uwaterloo/bicycle/ui/contentassist/antlr/internal/InternalModeLanguage.g:2371:1: RULE_BUILT_IN_MODES
            {
             before(grammarAccess.getPrimaryExpressionAccess().getBimBUILT_IN_MODESTerminalRuleCall_3_1_0()); 
            match(input,RULE_BUILT_IN_MODES,FOLLOW_RULE_BUILT_IN_MODES_in_rule__PrimaryExpression__BimAssignment_3_14688); 
             after(grammarAccess.getPrimaryExpressionAccess().getBimBUILT_IN_MODESTerminalRuleCall_3_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__PrimaryExpression__BimAssignment_3_1"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel61 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__ModesAssignment_in_ruleModel94 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_ruleMode_in_entryRuleMode122 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMode129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__0_in_ruleMode155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConditions_in_entryRuleConditions182 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConditions189 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompoundCondition_in_ruleConditions215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompoundCondition_in_entryRuleCompoundCondition241 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCompoundCondition248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group__0_in_ruleCompoundCondition274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondition_in_entryRuleCondition301 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCondition308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group__0_in_ruleCondition334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression361 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExpression368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAddition_in_ruleExpression394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAddition_in_entryRuleAddition420 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAddition427 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group__0_in_ruleAddition453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultiplication_in_entryRuleMultiplication480 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMultiplication487 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group__0_in_ruleMultiplication513 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimaryExpression_in_entryRulePrimaryExpression540 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrimaryExpression547 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Alternatives_in_rulePrimaryExpression573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_0__0_in_rule__CompoundCondition__Alternatives_1_0609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_1__0_in_rule__CompoundCondition__Alternatives_1_0627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_0__0_in_rule__Condition__Alternatives_1660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_1__0_in_rule__Condition__Alternatives_1678 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_2__0_in_rule__Condition__Alternatives_1696 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__0_in_rule__Addition__Alternatives_1_0729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__0_in_rule__Addition__Alternatives_1_0747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__0_in_rule__Multiplication__Alternatives_1_0780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__0_in_rule__Multiplication__Alternatives_1_0798 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_2__0_in_rule__Multiplication__Alternatives_1_0816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__0_in_rule__PrimaryExpression__Alternatives849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__0_in_rule__PrimaryExpression__Alternatives867 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__0_in_rule__PrimaryExpression__Alternatives885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__0_in_rule__PrimaryExpression__Alternatives903 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__0__Impl_in_rule__Mode__Group__0934 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Mode__Group__1_in_rule__Mode__Group__0937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__Mode__Group__0__Impl965 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__1__Impl_in_rule__Mode__Group__1996 = new BitSet(new long[]{0x0000000008001000L});
    public static final BitSet FOLLOW_rule__Mode__Group__2_in_rule__Mode__Group__1999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__NameAssignment_1_in_rule__Mode__Group__1__Impl1026 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__2__Impl_in_rule__Mode__Group__21056 = new BitSet(new long[]{0x0000000008001000L});
    public static final BitSet FOLLOW_rule__Mode__Group__3_in_rule__Mode__Group__21059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__InvAssignment_2_in_rule__Mode__Group__2__Impl1086 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__3__Impl_in_rule__Mode__Group__31117 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rule__Mode__Group__4_in_rule__Mode__Group__31120 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Mode__Group__3__Impl1148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__4__Impl_in_rule__Mode__Group__41179 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_rule__Mode__Group__5_in_rule__Mode__Group__41182 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__TypeAssignment_4_in_rule__Mode__Group__4__Impl1209 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__5__Impl_in_rule__Mode__Group__51239 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_rule__Mode__Group__6_in_rule__Mode__Group__51242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group_5__0_in_rule__Mode__Group__5__Impl1269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__6__Impl_in_rule__Mode__Group__61300 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__Mode__Group__7_in_rule__Mode__Group__61303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Mode__Group__6__Impl1331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group__7__Impl_in_rule__Mode__Group__71362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__ExprAssignment_7_in_rule__Mode__Group__7__Impl1389 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group_5__0__Impl_in_rule__Mode__Group_5__01435 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__Mode__Group_5__1_in_rule__Mode__Group_5__01438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__Mode__Group_5__0__Impl1466 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__Group_5__1__Impl_in_rule__Mode__Group_5__11497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Mode__ConditionAssignment_5_1_in_rule__Mode__Group_5__1__Impl1524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group__0__Impl_in_rule__CompoundCondition__Group__01558 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group__1_in_rule__CompoundCondition__Group__01561 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondition_in_rule__CompoundCondition__Group__0__Impl1588 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group__1__Impl_in_rule__CompoundCondition__Group__11617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1__0_in_rule__CompoundCondition__Group__1__Impl1644 = new BitSet(new long[]{0x0000000000018002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1__0__Impl_in_rule__CompoundCondition__Group_1__01679 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1__1_in_rule__CompoundCondition__Group_1__01682 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Alternatives_1_0_in_rule__CompoundCondition__Group_1__0__Impl1709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1__1__Impl_in_rule__CompoundCondition__Group_1__11739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__RightAssignment_1_1_in_rule__CompoundCondition__Group_1__1__Impl1766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_0__0__Impl_in_rule__CompoundCondition__Group_1_0_0__01800 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_0__1_in_rule__CompoundCondition__Group_1_0_0__01803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_0__1__Impl_in_rule__CompoundCondition__Group_1_0_0__11861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__CompoundCondition__Group_1_0_0__1__Impl1889 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_1__0__Impl_in_rule__CompoundCondition__Group_1_0_1__01924 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_1__1_in_rule__CompoundCondition__Group_1_0_1__01927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__CompoundCondition__Group_1_0_1__1__Impl_in_rule__CompoundCondition__Group_1_0_1__11985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__CompoundCondition__Group_1_0_1__1__Impl2013 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group__0__Impl_in_rule__Condition__Group__02048 = new BitSet(new long[]{0x00000000000E0000L});
    public static final BitSet FOLLOW_rule__Condition__Group__1_in_rule__Condition__Group__02051 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpression_in_rule__Condition__Group__0__Impl2078 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group__1__Impl_in_rule__Condition__Group__12107 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__Condition__Group__2_in_rule__Condition__Group__12110 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Alternatives_1_in_rule__Condition__Group__1__Impl2137 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group__2__Impl_in_rule__Condition__Group__22167 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__RightAssignment_2_in_rule__Condition__Group__2__Impl2194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_0__0__Impl_in_rule__Condition__Group_1_0__02230 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_0__1_in_rule__Condition__Group_1_0__02233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_0__1__Impl_in_rule__Condition__Group_1_0__12291 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__Condition__Group_1_0__1__Impl2319 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_1__0__Impl_in_rule__Condition__Group_1_1__02354 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_1__1_in_rule__Condition__Group_1_1__02357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_1__1__Impl_in_rule__Condition__Group_1_1__12415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Condition__Group_1_1__1__Impl2443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_2__0__Impl_in_rule__Condition__Group_1_2__02478 = new BitSet(new long[]{0x00000000000E0000L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_2__1_in_rule__Condition__Group_1_2__02481 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Condition__Group_1_2__1__Impl_in_rule__Condition__Group_1_2__12539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Condition__Group_1_2__1__Impl2567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group__0__Impl_in_rule__Addition__Group__02602 = new BitSet(new long[]{0x0000000000300000L});
    public static final BitSet FOLLOW_rule__Addition__Group__1_in_rule__Addition__Group__02605 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultiplication_in_rule__Addition__Group__0__Impl2632 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group__1__Impl_in_rule__Addition__Group__12661 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1__0_in_rule__Addition__Group__1__Impl2688 = new BitSet(new long[]{0x0000000000300002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1__0__Impl_in_rule__Addition__Group_1__02723 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__Addition__Group_1__1_in_rule__Addition__Group_1__02726 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Alternatives_1_0_in_rule__Addition__Group_1__0__Impl2753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1__1__Impl_in_rule__Addition__Group_1__12783 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__RightAssignment_1_1_in_rule__Addition__Group_1__1__Impl2810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__0__Impl_in_rule__Addition__Group_1_0_0__02844 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__1_in_rule__Addition__Group_1_0_0__02847 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_0__1__Impl_in_rule__Addition__Group_1_0_0__12905 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rule__Addition__Group_1_0_0__1__Impl2933 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__0__Impl_in_rule__Addition__Group_1_0_1__02968 = new BitSet(new long[]{0x0000000000300000L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__1_in_rule__Addition__Group_1_0_1__02971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Addition__Group_1_0_1__1__Impl_in_rule__Addition__Group_1_0_1__13029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_rule__Addition__Group_1_0_1__1__Impl3057 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group__0__Impl_in_rule__Multiplication__Group__03092 = new BitSet(new long[]{0x0000000001C00000L});
    public static final BitSet FOLLOW_rule__Multiplication__Group__1_in_rule__Multiplication__Group__03095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimaryExpression_in_rule__Multiplication__Group__0__Impl3122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group__1__Impl_in_rule__Multiplication__Group__13151 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1__0_in_rule__Multiplication__Group__1__Impl3178 = new BitSet(new long[]{0x0000000001C00002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1__0__Impl_in_rule__Multiplication__Group_1__03213 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1__1_in_rule__Multiplication__Group_1__03216 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Alternatives_1_0_in_rule__Multiplication__Group_1__0__Impl3243 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1__1__Impl_in_rule__Multiplication__Group_1__13273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__RightAssignment_1_1_in_rule__Multiplication__Group_1__1__Impl3300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__0__Impl_in_rule__Multiplication__Group_1_0_0__03334 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__1_in_rule__Multiplication__Group_1_0_0__03337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_0__1__Impl_in_rule__Multiplication__Group_1_0_0__13395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rule__Multiplication__Group_1_0_0__1__Impl3423 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__0__Impl_in_rule__Multiplication__Group_1_0_1__03458 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__1_in_rule__Multiplication__Group_1_0_1__03461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_1__1__Impl_in_rule__Multiplication__Group_1_0_1__13519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rule__Multiplication__Group_1_0_1__1__Impl3547 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_2__0__Impl_in_rule__Multiplication__Group_1_0_2__03582 = new BitSet(new long[]{0x0000000001C00000L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_2__1_in_rule__Multiplication__Group_1_0_2__03585 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Multiplication__Group_1_0_2__1__Impl_in_rule__Multiplication__Group_1_0_2__13643 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_rule__Multiplication__Group_1_0_2__1__Impl3671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__0__Impl_in_rule__PrimaryExpression__Group_0__03706 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__1_in_rule__PrimaryExpression__Group_0__03709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_rule__PrimaryExpression__Group_0__0__Impl3737 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__1__Impl_in_rule__PrimaryExpression__Group_0__13768 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__2_in_rule__PrimaryExpression__Group_0__13771 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__BrackexprAssignment_0_1_in_rule__PrimaryExpression__Group_0__1__Impl3798 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_0__2__Impl_in_rule__PrimaryExpression__Group_0__23828 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_rule__PrimaryExpression__Group_0__2__Impl3856 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__0__Impl_in_rule__PrimaryExpression__Group_1__03893 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__1_in_rule__PrimaryExpression__Group_1__03896 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_1__1__Impl_in_rule__PrimaryExpression__Group_1__13954 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__ValueAssignment_1_1_in_rule__PrimaryExpression__Group_1__1__Impl3981 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__0__Impl_in_rule__PrimaryExpression__Group_2__04015 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__1_in_rule__PrimaryExpression__Group_2__04018 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_2__1__Impl_in_rule__PrimaryExpression__Group_2__14076 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__ModeAssignment_2_1_in_rule__PrimaryExpression__Group_2__1__Impl4103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__0__Impl_in_rule__PrimaryExpression__Group_3__04137 = new BitSet(new long[]{0x00000000020000D0L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__1_in_rule__PrimaryExpression__Group_3__04140 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__Group_3__1__Impl_in_rule__PrimaryExpression__Group_3__14198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__PrimaryExpression__BimAssignment_3_1_in_rule__PrimaryExpression__Group_3__1__Impl4225 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMode_in_rule__Model__ModesAssignment4264 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_MNAME_in_rule__Mode__NameAssignment_14295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_rule__Mode__InvAssignment_24331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_TYPES_in_rule__Mode__TypeAssignment_44370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConditions_in_rule__Mode__ConditionAssignment_5_14401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpression_in_rule__Mode__ExprAssignment_74432 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondition_in_rule__CompoundCondition__RightAssignment_1_14463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpression_in_rule__Condition__RightAssignment_24494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMultiplication_in_rule__Addition__RightAssignment_1_14525 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimaryExpression_in_rule__Multiplication__RightAssignment_1_14556 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpression_in_rule__PrimaryExpression__BrackexprAssignment_0_14587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_NUMBER_in_rule__PrimaryExpression__ValueAssignment_1_14618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_MNAME_in_rule__PrimaryExpression__ModeAssignment_2_14653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_BUILT_IN_MODES_in_rule__PrimaryExpression__BimAssignment_3_14688 = new BitSet(new long[]{0x0000000000000002L});

}